ó
    Ñ]jO!  ã                  ót  • S SK J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  \R                  " \5      rSrSS	 jrS S!S
 jjrS"S jrS#S$S jjrS#S$S jj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+S jrSS.S,S jjrS%S jr S-S jr!S#S.S jjr"S#S/S jjr#S0S jr$S1S jr%g)2é    )ÚannotationsN)ÚMapping)Ú
FatalError)ÚCalledProcessError)Ú
cmd_output©Úcmd_output_b)z-czcore.useBuiltinFSMonitor=falsec                óX   • U R                  S5      n U (       a  U R                  S5      $ / $ )NÚ )ÚstripÚsplit)Úss    ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pre_commit/git.pyÚzsplitr      s%   € Ø	�‰�‹€AÞØ�w‰w�t‹}Ðàˆ	ó    c                óê   • U b  U O[         R                  n U R                  5        VVs0 s H;  u  pUR                  S5      (       a  UR                  S5      (       d  US;   d  M9  X_M=     snn$ s  snnf )NÚGIT_)ÚGIT_CONFIG_KEY_ÚGIT_CONFIG_VALUE_>	   ÚGIT_SSHÚGIT_ASKPASSÚGIT_EXEC_PATHÚGIT_SSL_CAINFOÚGIT_SSH_COMMANDÚGIT_CONFIG_COUNTÚGIT_SSL_NO_VERIFYÚGIT_ALLOW_PROTOCOLÚGIT_HTTP_PROXY_AUTHMETHOD)ÚosÚenvironÚitemsÚ
startswith)Ú_envÚkÚvs      r   Ú
no_git_envr&      sp   € ð Ñ#‰4¬¯©€DàŸ™œôÚ%‘�Ø�|‰|˜F×#Ñ#Ø	�‰Ð=×>Ñ>Ø	ð 
ñ 	
ó 	ˆŠ™òð ùó s   ©8A/Á%A/c                 ó  •  [         R                  R                  [        SSS5      S   R	                  5       5      n [        SSS5      S   R	                  5       nUS:w  a  [        S5      eU $ ! [
         a    [        S5      ef = f)	NÚgitú	rev-parsez--show-cdupé   z--is-inside-git-dirzGgit failed. Is it installed, and are you in a Git repository directory?Úfalsezfgit toplevel unexpectedly empty! make sure you are not inside the `.git` directory of your repository.)r   ÚpathÚabspathr   r   r   r   )ÚrootÚinside_git_dirs     r   Úget_rootr0   3   sŸ   € ð

Ü�w‰w�‰Ü�u˜k¨=Ó9¸!Ñ<×BÑBÓDó
ˆô $Ø�;Ð 5ó
à
ñç‰U‹Wð 	ð ˜Ó Üð>ó
ð 	
ð €Køô ó 
Üðó
ð 	
ð
ús   ‚AA. Á.BÚ.c                óÚ   • Sn[        SSXS9u  p#nUR                  5       nXA:w  a<  [        R                  R	                  [        R                  R                  X5      5      $ [        S5      e)Nz	--git-dirr(   r)   ©Úcwdzunreachable: no git dir)r   r   r   r,   ÚnormpathÚjoinÚAssertionError)Úgit_rootÚoptÚ_ÚoutÚgit_dirs        r   Úget_git_dirr=   L   sW   € Ø
€CÜ˜5 +¨sÑA�I€AˆAØ�i‰i‹k€GØƒ~Ü�w‰w×Ñ¤§¡§¡¨XÓ ?Ó@Ð@äÐ6Ó7Ð7r   c                óÚ   • Sn[        SSXS9u  p#nUR                  5       nXA:w  a<  [        R                  R	                  [        R                  R                  X5      5      $ [        U 5      $ )Nz--git-common-dirr(   r)   r3   )r   r   r   r,   r5   r6   r=   )r8   r9   r:   r;   Úgit_common_dirs        r   Úget_git_common_dirr@   V   sW   € Ø
€CÜ˜5 +¨sÑA�I€AˆAØ—Y‘Y“[€NØÓÜ�w‰w×Ñ¤§¡§¡¨XÓ FÓGÐGä˜8Ó$Ð$r   c                 ó  • [        S5      n [        R                  R                  [        R                  R	                  U S5      5      =(       a=    [        R                  R                  [        R                  R	                  U S5      5      $ )Nr1   Ú	MERGE_MSGÚ
MERGE_HEAD)r=   r   r,   Úexistsr6   )r<   s    r   Úis_in_merge_conflictrE   `   sT   € Ü˜#Ó€Gä
�‰�‰”r—w‘w—|‘| G¨[Ó9Ó:÷ 	<Ü
�‰�‰”r—w‘w—|‘| G¨\Ó:Ó;ðr   c                óÔ   • U R                  5        Vs/ s HH  nUR                  S5      (       d  M  UR                  S5      R                  5       R	                  5       PMJ     sn$ s  snf )N)ó   	s   #	ó   #)Ú
splitlinesr"   Úlstripr   Údecode)Ú	merge_msgÚlines     r   Úparse_merge_msg_for_conflictsrN   h   s[   € ð ×(Ñ(Ô*óâ*ˆDà�?‰?˜?×+ó 	+ˆ�‰�DÓ×ÑÓ!×(Ñ(Ö*Ù*ñð ùò s
   “A%±1A%c                 ó¤  • [         R                  S5        [        [        R                  R                  [        S5      S5      S5       n U R                  5       nS S S 5        [        W5      n[        SS5      S   R                  5       n[        [        SSS	S
SSUSSS5
      S   5      n[        U5      [        U5      -  $ ! , (       d  f       Nm= f)Nz#Checking merge-conflict files only.r1   rB   Úrbr(   z
write-treer*   Údiffú--name-onlyú--no-ext-diffú-zz-mÚHEADrC   z--)ÚloggerÚinfoÚopenr   r,   r6   r=   ÚreadrN   r   r   r   Úset)ÚfrL   Úmerge_conflict_filenamesÚ	tree_hashÚmerge_diff_filenamess        r   Úget_conflicted_filesr_   r   s¿   € Ü
‡K�KÐ5Ô6ô 
Œb�g‰g�l‰lœ; sÓ+¨[Ó9¸4Ô	@ÀAØ—F‘F“Hˆ	÷ 
Aä<¸YÓGÐô
 ˜5 ,Ó/°Ñ2×8Ñ8Ó:€IÜ!ÜØ�6˜=¨/¸4Ø�)˜V \°4ó	
ð ñ	óÐô Ð'Ó(¬3Ð/CÓ+DÑDÐD÷ 
AÕ	@ús   Á	CÃ
Cc                ó:   • [        [        SSSSSSSU S9S	   5      $ )
Nr(   rQ   z--stagedrR   rS   rT   z--diff-filter=ACMRTUXBr3   r*   ©r   r   r3   s    r   Úget_staged_filesrb   ‡   s4   € ÜÜØ�6˜: }°oÀtà$Øñ		
ð
 ñ	óð r   c            	     ó@   • [        SSSSSSS5      u  pn [        U5      $ )Nr(   rQ   rS   z--ignore-submodulesz--diff-filter=ArR   rT   )r   r   )r:   Ústdouts     r   Úintent_to_add_filesre   ’   s-   € ÜØˆv�Ð(=Ø˜=¨$ó�L€Aˆqô �&‹>Ðr   c                 ó4   • [        [        SSS5      S   5      $ )Nr(   zls-filesrT   r*   ra   © r   r   Úget_all_filesrh   š   s   € Ü”*˜U J°Ó5°aÑ8Ó9Ð9r   c                ó’   • Sn [        / UQU  SU 3P76 u  p4n[        U5      $ ! [         a    [        / UQU  SU 3P76 u  p4n N,f = f)N)r(   rQ   rR   rS   rT   z...z..)r   r   r   )ÚoldÚnewÚdiff_cmdr:   r;   s        r   Úget_changed_filesrm   ž   sl   € ØD€Hð;ÜÐ; Ð;¨S¨E°°S°EÐ*:Ò;‰	ˆ�ô �#‹;Ðøô ó ;ô Ð: Ð:¨S¨E°°C°5¨/Ò:‰	ˆ’ð;ús   „$ ¤AÁAc                óL   • [        SSSU S5      u  pnUR                  5       S   $ )Nr(   z	ls-remotez--exit-coderU   r   )r   r   )Úremoter:   r;   s      r   Úhead_revrp   ª   s(   € Ü˜5 +¨}¸fÀfÓM�I€AˆAØ�9‰9‹;�q‰>Ðr   )Úrepoc                ó6   • SSSS/UQ7n[        X SS.6S   S:H  $ )	Nr(   rQ   z--quietrS   F)r4   Úcheckr   r*   r   )rq   ÚargsÚcmds      r   Úhas_diffrv   ¯   s,   € Ø�&˜) _Ð
<°tÑ
<€CÜ˜¨eÒ4°QÑ7¸1Ñ<Ð<r   c                 óR   • [        SSSSS9u  pn [        UR                  5       5      $ )Nr(   Úconfigzcore.hooksPathF)rs   )r	   Úboolr   )r:   r;   s     r   Úhas_core_hookpaths_setrz   ´   s(   € Ü˜U HÐ.>ÀeÑL�I€AˆAÜ�—	‘	“ÓÐr   c                ó  • [         R                  R                  U5      (       a  [         R                  R                  U5      nS/[        Q7n[        5       n[        / UQSPSPU P7SU06  [        / UQSPSPSPUP7XS.6  g )	Nr(   Úinitz--template=Úenvro   ÚaddÚorigin©r4   r}   )r   r,   Úisdirr-   ÚNO_FS_MONITORr&   r	   )r,   ro   r(   r}   s       r   Ú	init_reporƒ   ¹   s~   € Ü	‡w�w‡}�}�V×ÑÜ—‘—‘ Ó(ˆàÐ
!”=Ñ
!€CÜ
‹,€CäÐ<�#Ð<�vÐ<˜}Ð<¨dÒ<¸Ò<ÜÐL�#ÐL�xÐL ÐL¨ÐL°&ÑL¸dÔLr   c                ób   • [        5       nSu  p#U=US'   US'   U=US'   US'   Sn[        X@US.6  g )N)z
pre-commitzasottile+pre-commit@umich.eduÚGIT_AUTHOR_NAMEÚGIT_COMMITTER_NAMEÚGIT_AUTHOR_EMAILÚGIT_COMMITTER_EMAIL)r(   Úcommitz	--no-editz--no-gpg-signz-nz-minitr€   )r&   r	   )rq   r}   ÚnameÚemailru   s        r   r‰   r‰   Ä   sK   € Ü
‹,€CØ?�K€DØ9=Ð=€CÐÑ˜SÐ!5Ñ6Ø;@Ð@€CÐÑ˜cÐ"7Ñ8Ø
I€CÜ�# SÔ)r   c                óz   • [        SSSXS9u  p#n[        R                  R                  XR	                  5       5      $ )Nr(   r)   z
--git-pathr3   )r   r   r,   r6   r   )rŠ   rq   r:   r;   s       r   Úgit_pathr�   Í   s/   € Ü˜5 +¨|¸TÑL�I€AˆAÜ�7‰7�<‰<˜Ÿi™i›kÓ*Ð*r   c                 ó
  • [         R                  S;   a_  [         R                  S:H  n  [        5       nUR	                  S5      nX-  (       a&  SSS.n[
        R                  SX0    S	X2    S
35        ggg! [         a     gf = f)z7See https://github.com/pre-commit/pre-commit/issues/354)ÚcygwinÚwin32r�   NÚ/z(cygwin)z	(windows))TFa
  pre-commit has detected a mix of cygwin python / git
This combination is not supported, it is likely you will receive an error later in the program.
Make sure to use cygwin git+python while using cygwin
These can be installed through the cygwin installer.
 - python z
 - git Ú
)ÚsysÚplatformr0   r   r"   rV   Úwarning)Úis_cygwin_pythonÚtoplevelÚis_cygwin_gitÚexe_types       r   Úcheck_for_cygwin_mismatchrš   Ò   s›   € ä
‡|�|Ð*Ó*ÜŸ<™<¨8Ñ3Ðð	Ü“zˆHð !×+Ñ+¨CÓ0ˆà×+Ø(°Ñ=ˆHÜ�N‰Nðð
 &Ñ7Ð8ð 9Ø"Ñ1Ð2°"ð6õð ,ð +øô ó 	Ùð	ús   ©
A5 Á5
BÂBc                ó€   • [        S/[        QSPSPU P7SU06S   R                  5       nU H  nSU;   d  M  Us  $    U $ )z£Get the best tag candidate.

Multiple tags can exist on a SHA. Sometimes a moving tag is attached
to a version tag. Try to pick the tag that looks like a version.
r(   Útagz--points-atr4   r*   r1   )r   r‚   rI   )ÚrevÚgit_repoÚtagsrœ   s       r   Úget_best_candidate_tagr    é   sj   € ô ØðÜðØ$ðØ&3ðØ58òØ>Fñàñ	ç	‰‹ð 	ó ˆØ�#�:ØŠJñ ð €Jr   )r   ÚstrÚreturnú	list[str])N)r#   zMapping[str, str] | Noner¢   zdict[str, str])r¢   r¡   )r1   )r8   r¡   r¢   r¡   )r¢   ry   )rL   Úbytesr¢   r£   )r¢   zset[str])r4   z
str | Noner¢   r£   )r¢   r£   )rj   r¡   rk   r¡   r¢   r£   )ro   r¡   r¢   r¡   )rt   r¡   rq   r¡   r¢   ry   )r,   r¡   ro   r¡   r¢   ÚNone)rq   r¡   r¢   r¥   )rŠ   r¡   rq   r¡   r¢   r¡   )r¢   r¥   )r�   r¡   rž   r¡   r¢   r¡   )&Ú
__future__r   ÚloggingÚos.pathr   r“   Úcollections.abcr   Úpre_commit.errorsr   Úpre_commit.utilr   r   r	   Ú	getLoggerÚ__name__rV   r‚   r   r&   r0   r=   r@   rE   rN   r_   rb   re   rh   rm   rp   rv   rz   rƒ   r‰   r�   rš   r    rg   r   r   Ú<module>r®      s¢   ðÝ "ã Û Û 
Ý #å (Ý .Ý &Ý (à	×	Ò	˜8Ó	$€ð 9€ôöô0ö28ö%ôôôEö*ôô:ô	ôð
 &)÷ =ô
ô
Mö*ö+ô
õ.r   