§
    øyIfã  ã                   ó@  — d Z ddlZddlZddlZddlZddlZddlmZmZ ddl	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ ej        d
k    rddlmZ nddlmZ  G d„ de¦  «        Zde
fd„Z e¦   «         Zdede
fd„Z e G d„ d¦  «        ¦   «         Z!dS )z;Caching of formatted files with feature-based invalidation.é    N)Ú	dataclassÚfield)ÚPath)ÚDictÚIterableÚ
NamedTupleÚSetÚTuple)Úuser_cache_dir)Úversion)ÚMode)Úerr)é   é   )ÚSelfc                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ÚFileDataÚst_mtimeÚst_sizeÚhashN)Ú__name__Ú
__module__Ú__qualname__ÚfloatÚ__annotations__ÚintÚstr© ó    ú?/var/www/piapp/venv/lib/python3.11/site-packages/black/cache.pyr   r      s+   € € € € € € Ø€O€O�OØ€L€L�LØ
€I€I�I€I€Ir   r   Úreturnc                  ó’   — t          d¦  «        } t          t          j                             d| ¦  «        ¦  «        }|t
          z  }|S )a[  Get the cache directory used by black.

    Users can customize this directory on all systems using `BLACK_CACHE_DIR`
    environment variable. By default, the cache directory is the user cache directory
    under the black application.

    This result is immediately set to a constant `black.cache.CACHE_DIR` as to avoid
    repeated calls.
    ÚblackÚBLACK_CACHE_DIR)r   r   ÚosÚenvironÚgetÚ__version__)Údefault_cache_dirÚ	cache_dirs     r    Úget_cache_dirr+      sA   € õ ' wÑ/Ô/ÐÝ•R”Z—^’^Ð$5Ð7HÑIÔIÑJÔJ€IØ�KÑ'€IØÐr   Úmodec                 óB   — t           d|                      ¦   «         › d�z  S )Nzcache.z.pickle)Ú	CACHE_DIRÚget_cache_key)r,   s    r    Úget_cache_filer0   2   s%   € ÝÐ= × 2Ò 2Ñ 4Ô 4Ð=Ð=Ð=Ñ=Ð=r   c                   ó&  — e Zd ZU eed<   eed<    ee¬¦  «        Ze	e
ef         ed<   ededefd„¦   «         Zedede
fd„¦   «         Zededefd	„¦   «         Zd
edefd„Zdee         deee         ee         f         fd„Zdee         ddfd„ZdS )ÚCacher,   Ú
cache_file)Údefault_factoryÚ	file_datar!   c                 ó*  — t          |¦  «        }	 |                     ¦   «         }n8# t          $ r+}t          d|› d|› �¦  «          | ||¦  «        cY d}~S d}~ww xY w|s | ||¦  «        S |                     d¦  «        5 }	 t          j        |¦  «        }d„ |                     ¦   «         D ¦   «         }n:# t
          j        t          t          f$ r  | ||¦  «        cY cddd¦  «         S w xY w	 ddd¦  «         n# 1 swxY w Y    | |||¦  «        S )z•Read the cache if it exists and is well-formed.

        If it is not well-formed, the call to write later should
        resolve the issue.
        zUnable to read cache file z due to NÚrbc                 ó(   — i | ]\  }}|t          |Ž “ŒS r   )r   ©Ú.0ÚkÚvs      r    ú
<dictcomp>zCache.read.<locals>.<dictcomp>P   s"   € ÐFÐFÐF±°°A˜Q¥¨! ÐFÐFÐFr   )r0   ÚexistsÚOSErrorr   ÚopenÚpickleÚloadÚitemsÚUnpicklingErrorÚ
ValueErrorÚ
IndexError)Úclsr,   r3   r>   ÚeÚfobjÚdatar5   s           r    Úreadz
Cache.read<   s¶  € õ $ DÑ)Ô)ˆ
ð	)Ø×&Ò&Ñ(Ô(ˆFˆFøÝð 	)ð 	)ð 	)åÐD¨ZÐDÐDÀÐDÐDÑEÔEÐEØ�3�t˜ZÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(øøøøð	)øøøð ð 	)Ø�3�t˜ZÑ(Ô(Ð(à�_Š_˜TÑ"Ô"ð 	- dð-Ý:@¼+ÀdÑ:KÔ:K�ØFÐF¸¿º¹¼ÐFÑFÔF�	�	øÝÔ*­J½
ÐCð -ð -ð -Ø�s˜4 Ñ,Ô,Ð,Ð,ð	-ð 	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð-øøøð ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð ˆs�4˜ YÑ/Ô/Ð/sP   ‘& ¦
A° AÁAÁAÂC=Â2B6Â5C=Â6(C-ÃC=Ã,C-Ã-C=Ã=DÄDÚpathc                 óv   — |                       ¦   «         }t          j        |¦  «                             ¦   «         S )zReturn hash digest for path.)Ú
read_bytesÚhashlibÚsha256Ú	hexdigest)rL   rJ   s     r    Úhash_digestzCache.hash_digestV   s/   € ð �ŠÑ Ô ˆÝŒ~˜dÑ#Ô#×-Ò-Ñ/Ô/Ð/r   c                 ó”   — |                       ¦   «         }t                               | ¦  «        }t          |j        |j        |¦  «        S )zReturn file data for path.)Ústatr2   rR   r   r   r   )rL   rT   r   s      r    Úget_file_datazCache.get_file_data]   s:   € ð �yŠy‰{Œ{ˆÝ× Ò  Ñ&Ô&ˆÝ˜œ t¤|°TÑ:Ô:Ð:r   Úsourcec                 ó>  — |                      ¦   «         }| j                             t          |¦  «        ¦  «        }|€dS |                     ¦   «         }|j        |j        k    rdS |j        |j        k    r't                               |¦  «        }||j	        k    rdS dS )z7Check if source has changed compared to cached version.NTF)
Úresolver5   r'   r   rT   r   r   r2   rR   r   )ÚselfrV   Úres_srcÚoldÚstÚnew_hashs         r    Ú
is_changedzCache.is_changede   s�   € à—.’.Ñ"Ô"ˆØŒn× Ò ¥ W¡¤Ñ.Ô.ˆØˆ;Ø�4à�\Š\‰^Œ^ˆØŒ:˜œÒ$Ð$Ø�4ØŒ;˜#œ,Ò&Ð&Ý×(Ò(¨Ñ1Ô1ˆHØ˜3œ8Ò#Ð#Ø�tØˆur   Úsourcesc                 óÌ   — t          ¦   «         }t          ¦   «         }|D ]B}|                      |¦  «        r|                     |¦  «         Œ-|                     |¦  «         ŒC||fS )zÑSplit an iterable of paths in `sources` into two sets.

        The first contains paths of files that modified on disk or are not in the
        cache. The other contains paths to non-modified files.
        )Úsetr^   Úadd)rY   r_   ÚchangedÚdoneÚsrcs        r    Úfiltered_cachedzCache.filtered_cachedu   si   € õ !™UœUˆÝ™%œ%ˆØð 	ð 	ˆCØ�Š˜sÑ#Ô#ð Ø—’˜CÑ Ô Ð Ð à—’˜‘”��Ø˜ˆ}Ðr   Nc                 óÖ  —  | j         j        d
i d„ |D ¦   «         ¤Ž 	 t                               dd¬¦  «         t	          j        t          | j        j        ¦  «        d¬¦  «        5 }d„ | j          	                    ¦   «         D ¦   «         }t          j        ||d¬¦  «         d	d	d	¦  «         n# 1 swxY w Y   t          j        |j        | j        ¦  «         d	S # t          $ r Y d	S w xY w)z6Update the cache file data and write a new cache file.c                 ó‚   — i | ]<}t          |                     ¦   «         ¦  «        t                               |¦  «        “Œ=S r   )r   rX   r2   rU   )r:   re   s     r    r=   zCache.write.<locals>.<dictcomp>‡   s8   € ÐOÐOÐOÀ�s�3—;’;‘=”=Ñ!Ô!¥5×#6Ò#6°sÑ#;Ô#;ÐOÐOÐOr   T)ÚparentsÚexist_okF)ÚdirÚdeletec                 ó    — i | ]\  }}|g |¢R “ŒS r   r   r9   s      r    r=   zCache.write.<locals>.<dictcomp>�   s1   € ð ;ð ;ð ;Ù!%  A�A�u˜�u�uð;ð ;ð ;r   é   )ÚprotocolNr   )r5   Úupdater.   ÚmkdirÚtempfileÚNamedTemporaryFiler   r3   ÚparentrC   rA   Údumpr%   ÚreplaceÚnamer?   )rY   r_   ÚfrJ   s       r    ÚwritezCache.write„   sS  € àˆŒÔð 	
ð 	
ØOÐOÀwÐOÑOÔOð	
ð 	
ð 	
ð	Ý�OŠO D°4ˆOÑ8Ô8Ð8ÝÔ,Ý˜œÔ.Ñ/Ô/¸ðñ ô ð 1àð;ð ;Ø)-¬×)=Ò)=Ñ)?Ô)?ð;ñ ;ô ;�õ ”˜D !¨aÐ0Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1õ ŒJ�q”v˜tœÑ/Ô/Ð/Ð/Ð/øÝð 	ð 	ð 	ØˆDˆDð	øøøs6   žA	C Á';B.Â"C Â.B2Â2C Â5B2Â6"C Ã
C(Ã'C()r   r   r   r   r   r   r   Údictr5   r   r   r   Úclassmethodr   rK   ÚstaticmethodrR   rU   Úboolr^   r   r
   r	   rf   ry   r   r   r    r2   r2   6   sY  € € € € € € à
€J€J�JØÐÐÑØ%* U¸4Ð%@Ñ%@Ô%@€Iˆt�C˜�MÔ"Ð@Ð@Ñ@àð0˜ð 0 ð 0ð 0ð 0ñ „[ð0ð2 ð0˜$ð 0 3ð 0ð 0ð 0ñ „\ð0ð ð;˜Dð ; Xð ;ð ;ð ;ñ „\ð;ð ð ¨$ð ð ð ð ð  x°¤~ð ¸%ÀÀDÄ	È3ÈtÌ9Ð@TÔ:Uð ð ð ð ð˜X dœ^ð °ð ð ð ð ð ð r   r2   )"Ú__doc__rO   r%   rA   Úsysrr   Údataclassesr   r   Úpathlibr   Útypingr   r   r   r	   r
   Úplatformdirsr   Ú_black_versionr   r(   Ú
black.moder   Úblack.outputr   Úversion_infor   Útyping_extensionsr   r+   r.   r0   r2   r   r   r    ú<module>r‰      sÅ  ðØ AÐ Aà €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à 'Ð 'Ð 'Ð 'Ð 'Ð 'à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àÔ�wÒÐØÐÐÐÐÐÐà&Ð&Ð&Ð&Ð&Ð&ðð ð ð ð ˆzñ ô ð ð�tð ð ð ð ð" ˆM‰OŒO€	ð>˜ð > $ð >ð >ð >ð >ð ð_ð _ð _ð _ð _ñ _ô _ñ „ð_ð _ð _r   