Ë
    (êñi¦[  ã                  óf  — d Z ddlmZ g d¢ZddlZddlmZ ddlm	Z	 ddl
Z
ddlZddlmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z* e"r&ddl+m,Z, ddlm-Z- ddl.m/Z/ ddl0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 d6d„Z7d7d„Z8d8d„Z9d9d„Z:d:d„Z;d;d„Z<e&d<d=d„«       Z=e&d>d„«       Z=d?d@d„Z=dAd „Z>dBd!„Z?dCd"„Z@dDd#„ZAdEd$„ZBdFd%„ZCdGd&„ZDdHd'„ZEdId(„ZFdJd)„ZGdKd*„ZHdLd+„ZIdMd,„ZJdNd-„ZK	 d?	 	 	 	 	 	 	 	 	 dOd.„ZLdPd/„ZMdQd0„ZNdRd1„ZOdSd2„ZPdTd3„ZQdUd4„ZRdVd5„ZSy)Wz%General repository-related functions.é    )Úannotations)	Ú	rev_parseÚ
is_git_dirÚtouchÚfind_submodule_git_dirÚname_to_objectÚshort_to_longÚ	deref_tagÚ	to_commitÚfind_worktree_git_dirN)ÚPath)Údigits)ÚBadNameÚ	BadObject)ÚGit)ÚWorkTreeRepositoryUnsupported)ÚObject)Ú
parse_date)ÚSymbolicReference)ÚcygpathÚ
bin_to_hexÚ
hex_to_bin)ÚIteratorÚOptionalÚTYPE_CHECKINGÚTupleÚUnionÚcastÚoverload)ÚAnyGitObjectÚLiteralÚPathLike)ÚGitCmdObjectDB)ÚCommit)Ú	Reference)ÚRefLogÚRefLogEntry)ÚTagé   )ÚRepoc                óL   — t        | d«      5  	 d d d «       | S # 1 sw Y   | S xY w)NÚab)Úopen)Úfilenames    úN/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/git/repo/fun.pyr   r   6   s)   € Ü	ˆh˜Ó	ñ Ø÷à€O÷à€Oús   �™#c                óÔ  — t        j                  | «      �rRt        j                  t        j                  | d«      «      sdt        j                  v r‘t        j                  t        j                  | d«      «      rht        j                  | d«      }t        j
                  |«      xs; t        j                  |«      xr$ t        j                  |«      j                  d«      S t        j
                  t        j                  | d«      «      r]t        j
                  t        j                  | d«      «      r4t        j
                  t        j                  | d«      «      rt        | «      ‚y)	ax  This is taken from the git setup.c:is_git_directory function.

    :raise git.exc.WorkTreeRepositoryUnsupported:
        If it sees a worktree directory. It's quite hacky to do that here, but at least
        clearly indicates that we don't support it. There is the unlikely danger to
        throw if we see directories which just look like a worktree dir, but are none.
    ÚobjectsÚGIT_OBJECT_DIRECTORYÚrefsÚHEADÚgitdirÚ	commondirÚgitfileF)
ÚospÚisdirÚjoinÚosÚenvironÚisfileÚislinkÚreadlinkÚ
startswithr   )ÚdÚheadrefs     r/   r   r   <   së   € ô ‡y�y�…|Ü�I‰I”c—h‘h˜q )Ó,Ô-Ð1GÌ2Ï:É:Ñ1UÔ[^×[dÑ[dÜ�H‰H�Q˜Óô\
ô —h‘h˜q &Ó)ˆGÜ—:‘:˜gÓ&Òk¬3¯:©:°gÓ+>Ò+jÄ2Ç;Á;ÈwÓCW×CbÑCbÐciÓCjÐkä�J‰J”s—x‘x  8Ó,Ô-Ü—
‘
œ3Ÿ8™8 A {Ó3Ô4Ü—
‘
œ3Ÿ8™8 A yÓ1Ô2ä/°Ó2Ð2Øó    c                ó„  — 	 t        j                  | «      }t        j                  |j                  «      sy	 t        | «      j                  «       j                  «       }|D �cg c]!  }|j                  «       j                  d«      ‘Œ# c}D ]  \  }}|dk(  sŒ|c S  	 y# t        $ r Y yw xY wc c}w # t        $ r Y yw xY w)z&Search for a gitdir for this worktree.Nz: r5   )r;   ÚstatÚOSErrorÚS_ISREGÚst_moder   Ú	read_textÚ
splitlinesÚstripÚsplitÚ
ValueError)ÚdotgitÚstatbufÚlinesÚlineÚkeyÚvalues         r/   r   r   S   s¹   € ðÜ—'‘'˜&“/ˆô �<‰<˜Ÿ™Ô(ØðÜ�V“×&Ñ&Ó(×3Ñ3Ó5ˆØ@EÖF¸˜4Ÿ:™:›<×-Ñ-¨dÕ3ÒFò 	‰JˆC�Ø�h‹Ø’ñ	ð
 øô ò Ùðüò Gøô ò ØØðús@   ‚B ¸+B3 Á#&B.Â	B3 ÂB3 ÂB3 Â	B+Â*B+Â.B3 Â3	B?Â>B?c                óÜ  — t        | «      r| S 	 t        | «      5 }|j                  «       j                  «       }ddd«       j	                  d«      r€|dd }t        j                  «       rt        |«      }t        j                  |«      s<t        j                  t        j                  t        j                  | «      |«      «      }t        |«      S y# 1 sw Y   Œ›xY w# t        $ r Y yw xY w)zSearch for a submodule repo.Nzgitdir: é   )r   r-   ÚreadÚrstripr@   r   Ú	is_cygwinr   r8   ÚisabsÚnormpathr:   Údirnamer   ÚIOError)rA   ÚfpÚcontentÚpaths       r/   r   r   f   sÄ   € ä�!„}Øˆð0Ü�!‹Wð 	)˜Ø—g‘g“i×&Ñ&Ó(ˆG÷	)ð ×Ñ˜jÔ)Ø˜1˜2�;ˆDä�}‰}Œô ˜t“}�Ü—9‘9˜T”?Ü—|‘|¤C§H¡H¬S¯[©[¸«^¸TÓ$BÓC�Ü)¨$Ó/Ð/à÷%	)ð 	)ûäò àð ð!ús'   �C šC¹C ÃCÃC Ã	C+Ã*C+c                óV   — 	 t        | j                  |«      «      S # t        $ r Y yw xY w)zÉ
    :return:
        Long hexadecimal sha1 from the given less than 40 byte hexsha, or ``None`` if no
        candidate could be found.

    :param hexsha:
        hexsha with less than 40 bytes.
    N)r   Úpartial_to_complete_sha_hexr   )ÚodbÚhexshas     r/   r	   r	   �   s/   € ðÜ˜#×9Ñ9¸&ÓAÓBÐBøÜò Ùðús   ‚ œ	(§(c                ó   — t        j                  d|«      }|€t        j                  d|«      }|€t        j                  d|«      }|€y|j                  d«      }t        |«      dk(  r|j	                  d«      S t        | j                  |«      S )zHResolve git-describe style names to the abbreviated object they contain.z(^.+-\d+-g([0-9A-Fa-f]{4,40})(?:-dirty)?$Nz$^.+-g([0-9A-Fa-f]{4,40})(?:-dirty)?$z^([0-9A-Fa-f]{4,40})-dirty$r)   é(   Úascii)ÚreÚmatchÚgroupÚlenÚencoder	   rb   )ÚrepoÚnamerh   rc   s       r/   Ú_describe_to_longrn   ‘   s‚   € ä�H‰HÐ@À$ÓG€EØ€}Ü—‘Ð@À$ÓGˆØ€}Ü—‘Ð7¸Ó>ˆØ€}Øð �[‰[˜‹^€FÜ
ˆ6ƒ{�bÒØ�}‰}˜WÓ%Ð%Ü˜Ÿ™ 6Ó*Ð*rC   c                 ó   — y ©N© ©rl   rm   Ú
return_refs      r/   r   r   ¢   s   € Ø_brC   c                 ó   — y rp   rq   rr   s      r/   r   r   ¦   s   € ØrurC   c                óª  — d}| j                   j                  |«      r't        |«      dk7  rt        | j                  |«      }n|}|€5dD ]0  }	 t        j                  | ||z  «      }|rt        | ||z  «      c S  n |€t        | |«      }|rt        d|z  «      ‚|€t        |«      ‚t        j                  | t        |«      «      S # t        $ r Y Œˆw xY w)ah  
    :return:
        Object specified by the given name - hexshas (short and long) as well as
        references are supported.

    :param return_ref:
        If ``True``, and name specifies a reference, we will return the reference
        instead of the object. Otherwise it will raise :exc:`~gitdb.exc.BadObject` or
        :exc:`~gitdb.exc.BadName`.
    Nre   )z%szrefs/%szrefs/tags/%szrefs/heads/%szrefs/remotes/%szrefs/remotes/%s/HEADz Couldn't find reference named %r)Úre_hexsha_shortenedrh   rj   r	   rb   r   Údereference_recursiverM   rn   r   r   r   Únew_from_shar   )rl   rm   rs   rc   Úbases        r/   r   r   ª   sñ   € ð '+€Fð ×Ñ×%Ñ% dÔ+Üˆt‹9˜Š?ä" 4§8¡8¨TÓ2‰FàˆFð €~ð
ò 	ˆDðÜ*×@Ñ@ÀÀtÈdÁ{ÓS�ÙÜ,¨T°4¸$±;Ó?Ò?áð	ð& €~Ü" 4¨Ó.ˆñ ÜÐ:¸TÑAÓBÐBð €~Ü�d‹mÐô ×Ñ˜t¤Z°Ó%7Ó8Ð8øô' ò Ùðús   Á)CÃ	CÃCc                ó@   — 	 	 | j                   } Œ# t        $ r Y | S w xY w)z>Recursively dereference a tag and return the resulting object.)ÚobjectÚAttributeError)Útags    r/   r
   r
   è   s1   € à
ð	Ø—*‘*ˆCð øô ò 	Øà€Jð	ús   ƒ �	œc                ót   — | j                   dk(  rt        | «      } | j                   dk7  rt        d| z  «      ‚| S )z?Convert the given object to a commit if possible and return it.r}   Úcommitz'Cannot convert object %r to type commit)Útyper
   rM   )Úobjs    r/   r   r   ó   s9   € à
‡x�x�5ÒÜ˜‹nˆà
‡x�x�8ÒÜÐBÀSÑHÓIÐIà€JrC   c                ó@   — t        j                  | t        |«      «      S rp   )r   rx   r   )rl   rc   s     r/   Ú_object_from_hexsharƒ   þ   s   € Ü×Ñ˜t¤Z°Ó%7Ó8Ð8rC   c                óf   — 	 | j                   j                  S # t        $ r | j                   cY S w xY wrp   )ÚheadÚrefÚ	TypeError)rl   s    r/   Ú_current_reflog_refrˆ     s.   € ðØ�y‰y�}‰}ÐøÜò Ø�y‰yÒðús   ‚ ˜0¯0c                ó²   — | j                   | j                  k(  ry t        j                  t	        j
                  | j                   d«      |j                  «      S )NÚlogs)Ú
common_dirÚgit_dirr   Ú_get_validated_pathr8   r:   r_   )rl   r†   s     r/   Ú_common_reflog_pathrŽ   
  s>   € Ø‡�˜$Ÿ,™,Ò&Øä×0Ñ0´·±¸$¿/¹/È6Ó1RÐTW×T\ÑT\Ó]Ð]rC   c                ón  — 	 |j                  «       S # t        $ r™ t        | |«      }|r/t        j                  |«      rddlm}  |j                  |«      cY S 	 |j                  | j                  j                  j                  k(  r| j                  j                  «       cY S 	 ‚ # t        $ r Y ‚ w xY ww xY w©Nr   )r&   )ÚlogÚFileNotFoundErrorrŽ   r8   r=   Úgit.refs.logr&   Ú	from_filer_   r…   r†   r‡   )rl   r†   Úcommon_pathr&   s       r/   Ú_ref_logr–     s¢   € ðØ�w‰w‹yÐøÜò Ü)¨$°Ó4ˆÙœ3Ÿ:™: kÔ2Ý+à#�6×#Ñ# KÓ0Ò0ð	Ø�x‰x˜4Ÿ9™9Ÿ=™=×-Ñ-Ò-Ø—y‘y—}‘}“Ò&ð .ð 	øô ò 	Øàð	úðús5   ‚ ’AB4ÁAB$ÂB4Â#B4Â$	B0Â-B4Â/B0Â0B4c                ót  — 	 |j                  |«      S # t        $ r› t        | |«      }|r0t        j                  |«      rddlm}  |j                  ||«      cY S 	 |j                  | j                  j                  j                  k(  r| j                  j                  |«      cY S 	 ‚ # t        $ r Y ‚ w xY ww xY wr�   )Ú	log_entryr’   rŽ   r8   r=   r“   r&   Úentry_atr_   r…   r†   r‡   )rl   r†   Úindexr•   r&   s        r/   Ú_ref_log_entryr›   &  sª   € ðØ�}‰}˜UÓ#Ð#øÜò Ü)¨$°Ó4ˆÙœ3Ÿ:™: kÔ2Ý+à"�6—?‘? ;°Ó6Ò6ð	Ø�x‰x˜4Ÿ9™9Ÿ=™=×-Ñ-Ò-Ø—y‘y×*Ñ*¨5Ó1Ò1ð .ð 	øô ò 	Øàð	úðús5   ‚ “AB7ÁAB'Â"B7Â&B7Â'	B3Â0B7Â2B3Â3B7c                ó  — 	 t        |«      \  }}t        | |«      }|st	        d|z  «      ‚t        |«      D ]"  }|j                  d   |k  sŒ|j                  c S  |d   j                  S # t        $ r}t        d«      |‚d }~ww xY w)Nz3Support for additional @{...} modes not implementedzInvalid revlog date: %sr   )r   rM   ÚNotImplementedErrorr–   Ú
IndexErrorÚreversedÚtimeÚ	newhexsha)rl   r†   ÚspecÚ	timestampÚ_offsetÚer‘   Úentrys           r/   Ú_find_reflog_entry_by_dater§   ;  s�   € ð`Ü'¨Ó-Ñˆ	�7ô �4˜Ó
€CÙÜÐ2°TÑ9Ó:Ð:ô ˜#“ò #ˆØ�:‰:�a‰=˜IÓ%Ø—?‘?Ò"ð#ð
 ˆq‰6×ÑÐøô ò `Ü!Ð"WÓXÐ^_Ð_ûð`ús   ‚A+ Á+	BÁ4B Â Bc                óJ  — |dk  rt        d|z  «      ‚d}t        t        | | j                  «      «      D ]_  }|j                  xs d}d}|j                  |«      sŒ'|t        |«      d  j                  dd«      d   }|dz  }||k(  sŒSt        | |«      c S  t        d|z  «      ‚)Nr   z'Invalid previous checkout selector: -%iÚ zcheckout: moving from z to r)   )
rM   rŸ   r–   r…   Úmessager@   rj   rL   r   rž   )rl   ÚnthÚseenr¦   rª   ÚprefixÚprevious_branchs          r/   Ú_previous_checked_out_branchr¯   N  s¸   € Ø
ˆa‚xÜÐBÀSÑHÓIÐIð €DÜœ( 4¨¯©Ó3Ó4ò 
9ˆØ—-‘-Ò% 2ˆØ)ˆØ×!Ñ! &Ô)Øð "¤# f£+ -Ð0×6Ñ6°v¸qÓAÀ!ÑDˆØ�‰	ˆØ�3‹;Ü! $¨Ó8Ò8ð
9ô Ð>ÀÑDÓ
EÐErC   c                ó¦  — ddl m} |€	 | j                  }nit        ||«      r|}nZt        j                  |j                  «      j                  d«      r || |j                  «      }nt	        d|j                  z  «      ‚|j                  «       }|€t	        d|j                  z  «      ‚|j                  S # t        $ r}t	        d«      |‚d }~ww xY w)Nr   )ÚHeadz@{upstream}zrefs/heads/z%s@{upstream})Úgit.refs.headr±   Úactive_branchr‡   r   Ú
isinstancer;   Úfspathr_   r@   rm   Útracking_branchr   )rl   r†   r±   r…   r¥   r¶   s         r/   Ú_tracking_branch_objectr·   d  s¿   € Ý"à
€{ð	0Ø×%Ñ%‰Dô 
�C˜Ô	Ø‰Ü	�‰�3—8‘8Ó	×	'Ñ	'¨Ô	6Ù�D˜#Ÿ(™(Ó#‰ä�o¨¯©Ñ0Ó1Ð1ð ×*Ñ*Ó,€OØÐÜ�o¨¯	©	Ñ1Ó2Ð2à×!Ñ!Ð!øô ò 	0Ü˜-Ó(¨aÐ/ûð	0ús   ŠB6 Â6	CÂ?CÃCc                óŽ  — |j                  d«      r|dd  }|j                  d«      r6|�t        d«      ‚|dk(  rt        d«      ‚	 t        | t        |dd  «      «      S |j	                  «       }|dv rt        | |«      S |xs t        | «      }	 t        |«      }|d	k\  rt        | |d
|z  «      }n0|dk(  r|j                  S 	 t        | ||dz    «      }|j                  }	 t        | |«      S # t        $ r}t        d|z  «      |‚d }~ww xY w# t        $ r}t        d|z  «      |‚d }~ww xY w# t        $ r t        | ||«      }Y Œdw xY w)Nú+r)   ú-z7Previous checkout selectors do not take an explicit refz-0z+Negative zero is invalid in reflog selectorz&Invalid previous checkout selector: %s)ÚuÚupstreamÚpushi áõz%s +0000r   zInvalid revlog index: %i)r@   rM   r¯   ÚintÚlowerr·   rˆ   r§   r   r›   rž   r¡   rƒ   )rl   r†   r^   r¥   Úcontent_lowerÚentry_norc   r¦   s           r/   Ú_apply_reflogrÂ   {  s€  € Ø×Ñ˜#ÔØ˜!˜"�+ˆð ×Ñ˜#ÔØˆ?ÜÐVÓWÐWØ�dŠ?ÜÐJÓKÐKð	XÜ/°´c¸'À!À"¸+Ó6FÓGÐGð
 —M‘M“O€MØÐ1Ñ1Ü& t¨SÓ1Ð1ð Ò
*Ô$ TÓ*€Cð%Ü�w“<ˆð �yÒ Ü/°°c¸:ÈÑ;PÓQ‰FØ˜Š]Ø—:‘:ÐðOÜ& t¨S°H¸q±L°/ÓB�ð —_‘_‰Fô ˜t VÓ,Ð,øô9 ò 	XÜÐEÈÑOÓPÐVWÐWûð	Xûô, ò OÜ Ð!;¸hÑ!FÓGÈQÐNûðOûô ò @Ü+¨D°#°wÓ?Šð@úsB   ÁC+ ÂD+ ÃD Ã+	DÃ4DÄDÄ	D(ÄD#Ä#D(Ä+EÅEc                óÂ   — d}d}t        |dz   t        | «      «      D ]3  }| |   }|rd}Œ|dk(  rd}Œ|dk(  r|dz  }Œ |dk(  sŒ&|dz  }|dk(  sŒ1|c S  t        d| z  «      ‚)	Nr)   Fú\Tú{ú}r   z*Missing closing brace to define type in %s)Úrangerj   rM   )ÚrevÚstartÚdepthÚescapedÚidxÚchars         r/   Ú_find_closing_bracerÎ   §  s†   € Ø€EØ€GÜ�U˜Q‘Y¤ C£Ó)ò ˆØ�3‰xˆÙØ‰GØ�TŠ\Ø‰GØ�SŠ[Ø�Q‰J‰EØ�S‹[Ø�Q‰JˆEØ˜‹zØ’
ðô ÐAÀCÑGÓ
HÐHrC   c                ó¼   — | st        d«      ‚| j                  d«      r| dd  dfS | j                  d«      r| dd  dfS | j                  d«      rt        d	«      ‚| dfS )
Nz"Revision search requires a patternz!-é   Tz!!r)   Fú!z(Need one character after /!, typically -)rM   r@   )Úpatterns    r/   Ú_parse_searchrÓ   ¼  su   € ÙÜÐ=Ó>Ð>ð ×Ñ˜$ÔØ�q�rˆ{˜DÐ Ð Ø×Ñ˜$ÔØ�q�rˆ{˜EÐ!Ð!Ø×Ñ˜#ÔÜÐCÓDÐDØ�Eˆ>ÐrC   c                óT  — g }d}|t        | «      k  r†| |   }|dk(  rW|dz   t        | «      k  rF| |dz      }|dv r|j                  |«       n"|j                  |«       |j                  |«       |dz  }Œo|j                  |«       |dz  }|t        | «      k  rŒ†dj                  |«      S )Nr   rÄ   r)   z{}\rÐ   r©   )rj   Úappendr:   )rÒ   ÚoutrÌ   rÍ   Ú	next_chars        r/   Ú_unescape_braced_regexrØ   Ê  s°   € Ø
€CØ
€CØ
”�G“Ò
Ø�s‰|ˆØ�4Š<˜C !™G¤c¨'£lÒ2Ø  a¡Ñ(ˆIØ˜FÑ"Ø—
‘
˜9Õ%à—
‘
˜4Ô Ø—
‘
˜9Ô%à�1‰HˆCØà�
‰
�4ÔØˆq‰ˆð ”�G“Ó
ð  �7‰7�3‹<ÐrC   c                óô  — t        |rt        |«      n|«      \  }}	 t        j                  |«      }|€t        | «      }n#t        t        t        t        |«      «      g«      }|D ]Z  }|j                  }	t        |	t        «      r|	j                  |j                  d«      }	|j!                  |	xs d«      d u}
|
|k7  sŒX|c S  t#        d|z  «      ‚# t        j                  $ r}t        d|z  «      |‚d }~ww xY w)NzInvalid commit message regex %rÚreplacer©   z+No commit found matching message pattern %r)rÓ   rØ   rg   ÚcompileÚerrorrM   Ú_all_ref_commitsÚ_reachable_commitsr   r   r   rª   r´   ÚbytesÚdecodeÚencodingÚsearchr   )rl   rÈ   rÒ   ÚbracedÚnegatedÚregexr¥   Úcommitsr   rª   Úmatchess              r/   Ú_find_commit_by_messagerè   à  sö   € ô %ÉÔ%;¸GÔ%DÐT[Ó\Ñ€GˆWðMÜ—
‘
˜7Ó#ˆð €{Ü" 4Ó(‰ä$¤i´´V¸SÓ0AÓ&BÐ%CÓDˆð ò ˆØ—.‘.ˆÜ�gœuÔ%Ø—n‘n V§_¡_°iÓ@ˆGà—,‘,˜wš}¨"Ó-°TÐ9ˆØ�gÓØŠMðô Ð?À'ÑIÓ
JÐJøô' �8‰8ò MÜÐ:¸WÑDÓEÈ1ÐLûðMús   �C ÃC7Ã#C2Ã2C7c           	     óL  — g }| j                   D ]5  }	 |j                  t        t        t        |j
                  «      «      «       Œ7 	 |j                  | j                  j                  «       t        |«      S # t        t        f$ r Y Œzw xY w# t        $ r Y t        |«      S w xY wrp   )Ú
referencesrÕ   r   r   r   r{   r   rM   r…   r   rÞ   )rl   Ústartsr†   s      r/   rÝ   rÝ   ü  sš   € Ø€FØ�‰ò ˆð	Ø�M‰Mœ)¤D¬°·±Ó$<Ó=Õ>ððØ�‰�d—i‘i×&Ñ&Ô'ô ˜fÓ%Ð%øô œÐ$ò 	Ùð	ûô ò Øä˜fÓ%Ð%ðús#   “2A8Á%B Á8B
Â	B
Â	B#Â"B#c              #  ó  K  — t        «       }| d d  }|rr|j                  d„ d¬«       |j                  d«      }|j                  |v rŒ6|j	                  |j                  «       |–— |j                  |j                  «       |rŒqy y ­w)Nc                ó   — | j                   S rp   )Úcommitted_date)r   s    r/   ú<lambda>z$_reachable_commits.<locals>.<lambda>  s   € ¨×(=Ñ(=€ rC   T)rR   Úreverser   )ÚsetÚsortÚpopÚbinshaÚaddÚextendÚparents)rë   r¬   Úpendingr   s       r/   rÞ   rÞ     sp   è ø€ Ü‹5€DØ‘Qˆi€GÙ
Ø�‰Ñ=ÀtˆÔLØ—‘˜Q“ˆØ�=‰=˜DÑ Øà�‰�—‘ÔØŠØ�‰�v—~‘~Ô&ô ùs   ‚BBÂBc                ó  — |st        d«      ‚d}|}t        |«      dk\  r"|d   dk(  r|d   dv rt        |d   «      }|dd  }	 | j                  j                  ||f   j                  | «      S # t        $ r}t        d||fz  «      |‚d }~ww xY w)Nz':' must be followed by a pathr   rÐ   r)   ú:Ú0123z.Path %r did not exist in the index at stage %i)rM   rj   r¾   rš   ÚentriesÚto_blobÚKeyErrorr   )rl   r¢   Ústager_   r¥   s        r/   Ú_index_lookupr     sª   € ÙÜÐ9Ó:Ð:ð €EØ€DÜ
ˆ4ƒy�A‚~˜$˜q™' Sš.¨T°!©W¸Ñ->Ü�D˜‘G“ˆØ�A�Bˆxˆð_Ø�z‰z×!Ñ! 4¨ -Ñ0×8Ñ8¸Ó>Ð>øÜò _ÜÐFÈ$ÐPUÈÑVÓWÐ]^Ð^ûð_ús   Á)A- Á-	BÁ6BÂBc                óx   — | j                   dk7  r#t        t        t        | «      «      j                  } |s| S | |   S )NÚtree)r€   r   r   r   r  )r�   r_   s     r/   Ú_tree_lookupr  .  s7   € Ø
‡x�x�6ÒÜœœV SÓ)Ó*×/Ñ/ˆáØˆ
Øˆt‰9ÐrC   c                óf  — |j                  d«      rt        || |dd  d¬«      S |dk(  r| j                  dk(  rt        | «      S | S |dk(  r| S |dk(  rt	        t        t        | «      «      S |d	k(  r4| j                  d	k7  r#t	        t        t        | «      «      j                  S | S |d
k(  rH| j                  dk(  rt        | «      n| } | j                  |k(  r| S t        d|›d| j                  ›�«      ‚|dk(  r,| j                  |k(  r| S t        d|›d| j                  ›�«      ‚t        d|›d|›d�«      ‚)Nú/r)   T)rã   r©   r}   r{   r   r  Úblobz,Could not accommodate requested object type z, got zInvalid output type: z ( in z ))	r@   rè   r€   r
   r   r   r   r  rM   )r�   Úoutput_typerl   rÈ   s       r/   Ú_peelr  7  s(  € Ø×Ñ˜cÔ"Ü& t¨S°+¸a¸b°/È$ÔOÐOØ�bÒØ!$§¡¨UÒ!2Œy˜‹~Ð;¸Ð;Ø�hÒØˆ
Ø�hÒÜœœf cÓ*Ó+Ð+Ø�fÒØ47·H±HÀÒ4FŒyœœf cÓ*Ó+×0Ñ0ÐOÈCÐOØ�fÒØ #§¡¨EÒ 1Œi˜Œn°sˆØ�8‰8�{Ò"ØˆJåÒU`Ðbe×bjÒbjÐkÓlÐlØ�eÒØ�8‰8�{Ò"ØˆJåÒU`Ðbe×bjÒbjÐkÓlÐlå
ºKÊÐMÓ
NÐNrC   c                ó¨   — t        | «      D ]D  \  }}|dv r|c S |dk(  sŒ|dz   t        | «      k  r| |dz      nd }|dk(  r|dv r|c S |dk(  sŒB|c S  y )Nz^~:ú@r)   r   )Nú^ú~rú   rÅ   rÅ   )Ú	enumeraterj   )rÈ   rÌ   rÍ   r×   s       r/   Ú_first_rev_tokenr  Q  sp   € Ü˜s“^ò ‰	ˆˆTØ�5‰=ØŠJØ�3‹;Ø(+¨a©´#°c³(Ò(:˜˜C !™GšÀˆIØ�aŠx˜IÐ)CÑCØ’
Ø˜CÓØ’
ðð rC   c           
     óB  — |j                  d«      rt        | d|dd «      S |j                  d«      rt        | |dd «      S d}d}t        |«      }t	        |«      }|€t        | |«      S |dk(  rC|d   dk7  rt        d|z  «      ‚t        | «      }|j                  }|j                  d	«      rdnd}nA||   dk(  r(t        d
t        | |d| d¬«      «      }|j                  }nt        | |d| «      }|}||k  �ra||   }|dk(  rW|dz   |k\  s||dz      dk7  rt        d|z  «      ‚t        ||dz   «      }t        | |dk7  r||k(  r|nd||dz   | «      }d}|dz   }Œg|dk(  rt        |||dz   d «      S |dz  }|dk(  r5||k  r0||   dk(  r(t        ||«      }t        |||dz   | | |«      }d}|dz   }Œ½d}	d}
||k  r.||   t        v r|	dz  t        ||   «      z   }	|dz  }d}
nn||k  rŒ.|
sd}		 |dk(  r+t!        |«      }t#        |	«      D ]  }|j$                  d   }Œ n7|dk(  r$t!        |«      }|	dk(  rn!|j$                  |	dz
     }nt        d|z  «      ‚||k  r�Œa|€t        d|z  «      ‚|S # t&        t(        f$ r#}t+        d|› d|› t        |	«      › d�«      |‚d}~ww xY w)aû  Parse a revision string. Like :manpage:`git-rev-parse(1)`.

    :return:
        `~git.objects.base.Object` at the given revision.

        This may be any type of git object:

        * :class:`Commit <git.objects.commit.Commit>`
        * :class:`TagObject <git.objects.tag.TagObject>`
        * :class:`Tree <git.objects.tree.Tree>`
        * :class:`Blob <git.objects.blob.Blob>`

    :param rev:
        :manpage:`git-rev-parse(1)`-compatible revision specification as string.
        Please see :manpage:`git-rev-parse(1)` for details.

    :raise gitdb.exc.BadObject:
        If the given revision could not be found.

    :raise ValueError:
        If `rev` couldn't be parsed.

    :raise IndexError:
        If an invalid reflog index is specified.
    z:/NrÐ   rú   r)   r   r
  z5Revision specifier must start with an object name: %sz@{r%   T)rs   rÅ   z)Invalid @ token in revision specifier: %sr  Fé
   r  zInvalid token: %rzInvalid revision spec 'z(' - not enough parent commits to reach 'ú'z*Revision specifier could not be parsed: %s)r@   rè   r   rj   r  r   rM   rˆ   r   r   rÎ   rÂ   r  r  r   r¾   r   rÇ   r÷   rž   r|   r   )rl   rÈ   r�   r†   ÚlrÚfirst_tokenrÉ   ÚtokenÚendÚnumÚfound_digitÚ_r¥   s                r/   r   r   a  s]  € ð4 ‡~�~�dÔÜ& t¨T°3°q°r°7Ó;Ð;Ø
‡~�~�cÔÜ˜T 3 q r 7Ó+Ð+ð #'€CØ
€CÜ	ˆS‹€BÜ" 3Ó'€KØÐÜ˜d CÓ(Ð(ð �aÒØˆq‰6�SŠ=ÜÐTÐWZÑZÓ[Ð[ä! $Ó'ˆØ�j‰jˆØ—^‘^ DÔ)‘¨q‰àˆ{Ñ˜sÒ"Ü�{¤N°4¸¸\¸kÐ9JÐW[Ô$\Ó]ˆCØ—*‘*‰Cä   s¨<¨KÐ'8Ó9ˆCàˆð �"‹*Ø�E‘
ˆà�CŠ<Ø�q‰y˜BŠ # e¨a¡i¡.°CÒ"7Ü Ð!LÈsÑ!RÓSÐSä% c¨5°1©9Ó5ˆCÜ ¨[¸AÒ-=À%È;ÒBV¡cÐ\`ÐbeÐfkÐnoÑfoÐruÐbvÓwˆCØˆCØ˜!‘GˆEØð �CŠ<Ü  S¨°©¨Ð%5Ó6Ð6ð 	�‰
ˆà�CŠ<˜E BšJ¨3¨u©:¸Ò+<Ü% c¨5Ó1ˆCÜ˜˜S ¨¡¨SÐ1°4¸Ó=ˆCØˆCØ˜!‘GˆEØð ˆØˆØ�bŠjØ�5‰zœVÑ#Ø˜B‘h¤ S¨¡Z£Ñ0�Ø˜‘
�Ø"‘àð �b‹jñ ØˆCð	Ø˜Š|Ü “n�Ü˜s›ò )�AØŸ+™+ a™.‘Cñ)ð ˜#’Ü “n�Ø˜!’8ØàŸ+™+ c¨A¡gÑ.‘Cô !Ð!4°uÑ!<Ó=Ð=ðu �"Œ*ðF €{ÜÐEÈÑKÓLÐLà€Jøô œNÐ+ò 	ÜØ)¨#¨Ð.VÐW\ÐV]Ô^aÐbeÓ^fÐ]gÐghÐióàðûð	ús   Ç,A'I, É,JÉ;JÊJ)r.   ÚstrÚreturnr  )rA   r"   r  Úbool)rN   r"   r  úOptional[str])rA   r"   r  zOptional[PathLike])rb   z'GitCmdObjectDB'rc   r  r  úOptional[bytes])rl   ú'Repo'rm   r  r  r  ).)rl   r  rm   r  rs   zLiteral[False]r  r    )rl   r  rm   r  rs   zLiteral[True]r  ú&Union[AnyGitObject, SymbolicReference])F)rl   r  rm   r  rs   r  r  r  )r}   z'Tag'r  r    )r�   r   r  z'Commit')rl   r  rc   r  r  r    )rl   r  r  r   )rl   r  r†   r   r  r  )rl   r  r†   r   r  z'RefLog')rl   r  r†   r   rš   r¾   r  z'RefLogEntry')rl   r  r†   r   r¢   r  r  r  )rl   r  r«   r¾   r  r    )rl   r  r†   úOptional[SymbolicReference]r  r    )rl   r  r†   r   r^   r  r  r    )rÈ   r  rÉ   r¾   r  r¾   )rÒ   r  r  zTuple[str, bool])rÒ   r  r  r  )
rl   r  rÈ   zOptional[AnyGitObject]rÒ   r  rã   r  r  r    )rl   r  r  úIterator['Commit'])rë   zlist['Commit']r  r!  )rl   r  r¢   r  r  r    )r�   r    r_   r  r  r    )
r�   r    r  r  rl   r  rÈ   r  r  r    )rÈ   r  r  zOptional[int])rl   r  rÈ   r  r  r    )TÚ__doc__Ú
__future__r   Ú__all__r;   Úos.pathr_   r8   Úpathlibr   rg   rE   Ústringr   Ú	gitdb.excr   r   Úgit.cmdr   Úgit.excr   Úgit.objectsr   Úgit.objects.utilr   Úgit.refsr   Úgit.utilr   r   r   Útypingr   r   r   r   r   r   r   Ú	git.typesr    r!   r"   Úgit.dbr#   r$   Úgit.refs.referencer%   r“   r&   r'   Úgit.refs.tagr(   ry   r*   r   r   r   r   r	   rn   r   r
   r   rƒ   rˆ   rŽ   r–   r›   r§   r¯   r·   rÂ   rÎ   rÓ   rØ   rè   rÝ   rÞ   r   r  r  r  r   rq   rC   r/   ú<module>r4     sU  ðñ ,å "ò
€ó 
Ý Ý Û 	Û Ý ç (å Ý 1Ý Ý 'Ý &ß 4Ñ 4÷ S× RÑ Rç 5Ñ 5áÝ%Ý"Ý,ß0Ý åó
óó.ó&ó6ó +ð" 
Û bó 
Ø bð 
Ú uó 
Ø uô;9ó|óó9óó^óó*ó*ó&Fó,"ó.)-óXIó*óð. MRðKØ
ðKØ-ðKØ8;ðKØEIðKàóKó8&ó"'ó_ó$óOó4ô rC   