ó
    Ñ]j!  ã                  ó  • 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	  S SKJ
r
  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  \R0                  " S5      rSS jrSrSS jr " S S5      rg)é    )ÚannotationsN)ÚCallable)Ú	Generator)ÚSequence)Ú	clientlib)Ú	file_lock)Úgit)ÚCalledProcessError)Úclean_path_on_failure©Úcmd_output_b)Úresource_textÚ
pre_commitc                 óR  • [         R                  R                  S5      =(       dc    [         R                  R	                  [         R                  R                  S5      =(       d    [         R                  R                  S5      S5      n [         R                  R                  U 5      $ )a#  Returns the default directory for the Store.  This is intentionally
underscored to indicate that `Store.get_default_directory` is the intended
way to get this information.  This is also done so
`Store.get_default_directory` can be mocked in tests and
`_get_default_directory` can be tested.
ÚPRE_COMMIT_HOMEÚXDG_CACHE_HOMEz~/.cachez
pre-commit)ÚosÚenvironÚgetÚpathÚjoinÚ
expanduserÚrealpath)Úrets    ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pre_commit/store.pyÚ_get_default_directoryr      sj   € ô �*‰*�.‰.Ð*Ó
+÷ ¬r¯w©w¯|©|Ü
�
‰
�‰Ð'Ó(×J¬B¯G©G×,>Ñ,>¸zÓ,JØó0€Cô �7‰7×Ñ˜CÓ Ð ó    )z
Cargo.tomlzmain.gozgo.modzmain.rsz
.npmignorezpackage.jsonz!pre-commit-package-dev-1.rockspecz&pre_commit_placeholder_package.gemspeczsetup.pyzenvironment.ymlzMakefile.PLzpubspec.yamlz	renv.lockzrenv/activate.Rzrenv/LICENSE.renvc                ó’  • [          H«  n[        R                  R                  U5      u  p#[	        SU 35      n[        R                  R                  X5      n[        R                  R                  XS5      n[        R                  " USS9  [        US5       nUR                  U5        S S S 5        M­     g ! , (       d  f       M¿  = f)NÚempty_template_T©Úexist_okÚw)	Ú_LOCAL_RESOURCESr   r   Úsplitr   r   ÚmakedirsÚopenÚwrite)Ú	directoryÚresourceÚresource_dirnameÚresource_basenameÚcontentsÚ
target_dirÚtarget_fileÚfs           r   Ú_make_local_repor0   0   s�   € ß$ˆÜ.0¯g©g¯m©m¸HÓ.EÑ+ÐÜ  ?Ð3DÐ2EÐ!FÓGˆÜ—W‘W—\‘\ )Ó>ˆ
Ü—g‘g—l‘l :ÓAˆÜ
�Š�J¨Ò.Ü�+˜sÔ# qØ�G‰G�HÔ÷ $Ñ#ò %÷ $Ö#ús   ÂB7Â7
C	c                  ó   • \ rS rSr\" \5      rSSS jjr\R                  SS j5       r
\R                   S   SS jj5       r\SS j5       r          SS jrSS jrSS	 jrSSS
 jjrSS jrSS jrSS jrSrg)ÚStoreé;   Nc                ó6  • U=(       d    [         R                  5       U l        [        R                  R                  U R                  S5      U l        [        R                  R                  U R                  5      =(       a4    [        R                  " U R                  [        R                  5      (       + U l
        [        R                  R                  U R                  5      (       dm  [        R                  " U R                  SS9  [        [        R                  R                  U R                  S5      S5       nUR                  S5        S S S 5        [        R                  R                  U R                  5      (       a  g U R                  5          [        R                  R                  U R                  5      (       a
   S S S 5        g [        R                   " U R                  S9u  p4[        R"                  " U5        U R%                  US9 nUR'                  S	5        U R)                  U5        S S S 5        [        R*                  " X@R                  5        S S S 5        g ! , (       d  f       GN = f! , (       d  f       NI= f! , (       d  f       g = f)
Nzdb.dbTr    ÚREADMEr"   zmThis directory is maintained by the pre-commit project.
Learn more: https://github.com/pre-commit/pre-commit
)Údir)Údb_pathzuCREATE TABLE repos (    repo TEXT NOT NULL,    ref TEXT NOT NULL,    path TEXT NOT NULL,    PRIMARY KEY (repo, ref));)r2   Úget_default_directoryr(   r   r   r   r7   ÚexistsÚaccessÚW_OKÚreadonlyr%   r&   r'   Úexclusive_lockÚtempfileÚmkstempÚcloseÚconnectÚexecutescriptÚ_create_configs_tableÚreplace)Úselfr(   r/   ÚfdÚtmpfileÚdbs         r   Ú__init__ÚStore.__init__>   s§  € Ø"×C¤e×&AÑ&AÓ&CˆŒÜ—w‘w—|‘| D§N¡N°GÓ<ˆŒä�G‰G�N‰N˜4Ÿ>™>Ó*÷ 3Ü—	’	˜$Ÿ.™.¬"¯'©'Ó2Ô2ð 	Œô
 �w‰w�~‰~˜dŸn™n×-Ñ-Ü�KŠK˜Ÿ™°Ò6Ü”b—g‘g—l‘l 4§>¡>°8Ó<¸cÔBÀaØ—‘ðMô÷ Cô �7‰7�>‰>˜$Ÿ,™,×'Ñ'ØØ× Ñ Õ"ä�w‰w�~‰~˜dŸl™l×+Ñ+Ø÷ #Ð"ô #×*Ò*¨t¯~©~Ñ>‰KˆBä�HŠH�RŒLØ—‘ g�Ñ.°"Ø× Ñ ðôð ×*Ñ*¨2Ô.÷ /ô �JŠJ�w§¡Ô-÷+ #Ð"÷ CÖBú÷" /Õ.ú÷ #Õ"ús7   Ä<I'Æ0J
ÇAJ
È#I9È6(J
É'
I6É9
J	ÊJ
Ê

Jc              #  óÐ   #   • SS jn[         R                  " [        R                  R	                  U R
                  S5      U5         S v •  S S S 5        g ! , (       d  f       g = f7f)Nc                 ó.   • [         R                  S5        g )NzLocking pre-commit directory)ÚloggerÚinfo© r   r   Ú
blocked_cbÚ(Store.exclusive_lock.<locals>.blocked_cbi   s   € Ü�K‰KÐ6Õ7r   z.lock)ÚreturnÚNone)r   Úlockr   r   r   r(   )rE   rP   s     r   r=   ÚStore.exclusive_lockg   s<   é € ô	8ô �^Š^œBŸG™GŸL™L¨¯©¸ÓAÀ:ÕNÛ÷ O×NÖNüs   ‚AA&ÁAÁ	A&Á
A#ÁA&c              #  óþ   #   • U=(       d    U R                   n[        R                  " [        R                  " U5      5       nU   Uv •  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f©N)r7   Ú
contextlibÚclosingÚsqlite3rA   )rE   r7   rH   s      r   rA   ÚStore.connecto   sS   é € ð
 ×)˜TŸ\™\ˆô ×Ò¤§¢°Ó 8Ô9¸RâØ’÷ ÷ :Ð9ç•ú÷ :Õ9üs6   ‚A A=ÁA,ÁAÁ
A,Á	A=Á
A)	Á%A,Á,
A:Á6A=c                ó@   • U(       a  U SSR                  U5       3$ U$ )NÚ:Ú,)r   )ÚclsÚrepoÚdepss      r   Údb_repo_nameÚStore.db_repo_name}   s$   € æØ�V˜1˜SŸX™X d›^Ð,Ð-Ð-àˆKr   c                ód  ^ ^^• TnT R                  TU5      mSUUU 4S jjnU" 5       nU(       a  U$ T R                  5          U" 5       nU(       a  UsS S S 5        $ [        R                  ST S35        [        R
                  " ST R                  S9n[        U5         U" U5        S S S 5        T R                  5        n	U	R                  STTU/5        S S S 5        [        R                  " XX5        S S S 5        U$ ! , (       d  f       N\= f! , (       d  f       N?= f! , (       d  f       W$ = f)Nc                 óº   >• TR                  5        n U R                  STT45      R                  5       nU(       a  US   OS sS S S 5        $ ! , (       d  f       g = f)Nz1SELECT path FROM repos WHERE repo = ? AND ref = ?r   )rA   ÚexecuteÚfetchone)rH   ÚresultÚrefr`   rE   s     €€€r   Ú_get_resultÚ$Store._new_repo.<locals>._get_resultŽ   sI   ø€ à—‘” 2ØŸ™ØGØ˜3�Kó÷ ‘(“*ð ö %+�v˜a’y°÷  ——ús   ’0AÁ
AzInitializing environment for Ú.r`   )Úprefixr6   z4INSERT INTO repos (repo, ref, path) VALUES (?, ?, ?))rR   ú
str | None)rb   r=   rM   rN   r>   Úmkdtempr(   r   rA   rf   r   Úwarn_for_stages_on_repo_init)
rE   r`   ri   ra   Úmake_strategyÚoriginal_reporj   rh   r(   rH   s
   ```       r   Ú	_new_repoÚStore._new_repo„   s  ú€ ð ˆØ× Ñ   tÓ,ˆ÷	5ñ 	5ñ “ˆÞØˆMØ× Ñ Õ"á “]ˆFÞØ÷	 #Ñ"ô �K‰KÐ7¸°v¸QÐ?Ô@ä ×(Ò(°¸D¿N¹NÑKˆIÜ& yÕ1Ù˜iÔ(÷ 2ð —‘” 2Ø—
‘
ØJØ˜3 	Ð*ô÷  ô ×2Ò2°=ÔL÷' #ð* Ð÷ 2Õ1ú÷  •ú÷ #Ô"ð* ÐúsC   ÁD ÁAD Â	C>Â(D Ã DÃD Ã>
D	ÄD Ä
D	ÄD Ä 
D/c                ó@   • U" SSS5        U" SU5        U" SSSS5        g	)
z<Perform a complete clone of a repository and its submodules ÚfetchÚoriginz--tagsÚcheckoutÚ	submoduleÚupdateú--initú--recursiveNrO   )rE   ri   Úgit_cmds      r   Ú_complete_cloneÚStore._complete_clone±   s(   € ñ 	�˜ 8Ô,Ù�
˜CÔ Ù�˜X x°Õ?r   c           	     óP   • SnU" SUSSUS5        U" SS5        U" SUSS	S
SS5        g)z;Perform a shallow clone of a repository and its submodules zprotocol.version=2z-crv   rw   z	--depth=1rx   Ú
FETCH_HEADry   rz   r{   r|   NrO   )rE   ri   r}   Ú
git_configs       r   Ú_shallow_cloneÚStore._shallow_clone¸   s=   € ð *ˆ
Ù��j '¨8°S¸+ÔFÙ�
˜LÔ)ÙØ�*˜k¨8°X¸}Øõ	
r   c                óB   ^ ^^• SUUU 4S jjnT R                  TTX45      $ )z2Clone the given url and checkout the specific ref.c                óÞ   >^ ^• [         R                  " T T5        [         R                  " 5       mSU U4S jjn TR                  TU5        g ! [         a    TR                  TU5         g f = f)Nc                 ó&   >• [        S/U Q7TTS.6  g )Nr	   )ÚcwdÚenvr   )Úargsr(   r‰   s    €€r   Ú_git_cmdÚ5Store.clone.<locals>.clone_strategy.<locals>._git_cmdÊ   s   ø€ Ü˜UÐB TÑB¨y¸cÔBr   )rŠ   ÚstrrR   rS   )r	   Ú	init_repoÚ
no_git_envrƒ   r
   r~   )r(   r‹   r‰   ri   r`   rE   s   ` @€€€r   Úclone_strategyÚ#Store.clone.<locals>.clone_strategyÆ   s]   ú€ Ü�MŠM˜) TÔ*Ü—.’.Ó"ˆC÷Cð Cð4Ø×#Ñ# C¨Õ2øÜ%ó 4Ø×$Ñ$ S¨(Ö3ð4ús   ºA ÁA,Á+A,©r(   r�   rR   rS   )rs   )rE   r`   ri   ra   r�   s   ```  r   ÚcloneÚStore.cloneÃ   s"   ú€ ÷
	4ñ 
	4ð �~‰~˜d C¨Ó>Ð>r   c                óN   • U R                  S[        R                  U[        5      $ )NÚlocal)rs   ÚCÚLOCAL_REPO_VERSIONr0   )rE   ra   s     r   Ú
make_localÚStore.make_localÔ   s#   € Ø�~‰~Ø”Q×)Ñ)¨4Ô1Aó
ð 	
r   c                ó&   • UR                  S5        g )NzQCREATE TABLE IF NOT EXISTS configs (   path TEXT NOT NULL,   PRIMARY KEY (path));)rB   )rE   rH   s     r   rC   ÚStore._create_configs_tableÙ   s   € Ø
×Ñðõ	
r   c                óL  • U R                   (       a  g [        R                  R                  U5      n[        R                  R	                  U5      (       d  g U R                  5        nU R                  U5        UR                  SU45        S S S 5        g ! , (       d  f       g = f)Nz(INSERT OR IGNORE INTO configs VALUES (?))r<   r   r   r   r9   rA   rC   rf   )rE   r   rH   s      r   Úmark_config_usedÚStore.mark_config_usedá   sj   € Ø�=�=ØÜ�w‰w×Ñ Ó%ˆä�w‰w�~‰~˜d×#Ñ#ØØ�\‰\Œ^˜rà×&Ñ& rÔ*Ø�J‰JÐAÀDÀ7ÔK÷ �^Ž^ús   Á'%BÂ
B#)r7   r(   r<   rW   )r(   rn   rR   rS   )rR   zGenerator[None])r7   rn   rR   zGenerator[sqlite3.Connection])r`   r�   ra   úSequence[str]rR   r�   )
r`   r�   ri   r�   ra   r    rq   zCallable[[str], None]rR   r�   )ri   r�   r}   zCallable[..., None]rR   rS   )rO   )r`   r�   ri   r�   ra   r    rR   r�   )ra   r    rR   r�   )rH   zsqlite3.ConnectionrR   rS   )r   r�   rR   rS   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ústaticmethodr   r8   rI   rX   Úcontextmanagerr=   rA   Úclassmethodrb   rs   r~   rƒ   r“   r™   rC   rž   Ú__static_attributes__rO   r   r   r2   r2   ;   sÉ   † Ù(Ð)?Ó@Ðö'.ðR ×Ñóó ðð ×Ñð #'ðàðð 
'ôó ðð óó ðð+àð+ð ð+ð  ð	+ð
 1ð+ð 
ô+ôZ@ô	
ö?ô"
ô

÷
Lr   r2   )rR   r�   r’   )Ú
__future__r   rX   ÚloggingÚos.pathr   rZ   r>   Úcollections.abcr   r   r   Úpre_commit.constantsÚ	constantsr—   r   r   r   r	   Úpre_commit.utilr
   r   r   r   Ú	getLoggerrM   r   r#   r0   r2   rO   r   r   Ú<module>r±      sj   ðÝ "ã Û Û Û Û Ý $Ý %Ý $å  Ý  Ý  Ý Ý .Ý 1Ý (Ý )ð 
×	Ò	˜<Ó	(€ô!ðÐ ô÷pLò pLr   