
    ch`w                        S /r SSKJr  SSKrSSKJ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JrJrJrJ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JrJrJr  SSKJr  SSK J!r!  SSK"J#r#J$r$J%r%J&r&J'r'J(r(  SSK)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3  \Rh                  S:  a  SSK)J5r5  OSSK6J5r5  SSK7J8r8  \1(       a  SSK9J:r:  SSK;J<r<  \Rz                  " \>5      r? " S S \R                  \$\\#5      rAg)Commit    )defaultdictN)BytesIO)PopenPIPE)altzonedaylight	localtimetimetimezone)IStream)Git)Diffable)ActorStatsfinalize_process
hex_to_bin   )base)Tree)SerializableTraversableIterableObjaltz_to_utctz_strfrom_timestampparse_actor_and_date
parse_date)
AnyDictIOIteratorListSequenceTupleTYPE_CHECKINGUnioncast)      )Literal)PathLike)SymbolicReference)Repoc                     ^  \ rS rSr% SrSrSrSrSrSr	\
S   \S'   S	rS
r\S    \S'              S=SSS\S\\S4   S\\S4   S\\S4   S\S\4   S\\S4   S\\S4   S\S\4   S\\\S4   S\\S    S4   S\\S4   S\\S4   SS4U 4S jjjr\SS S\S   4S j5       r\SSSS S\4S j5       rS\SS 4S  jrS!\SS4U 4S" jjr\S\R>                  4S# j5       r \S\R>                  4S$ j5       r!\S\\\4   4S% j5       r"S>S&\\#\\#   4   S\S\4S' jjr$\S\4S( j5       r%\ S>SSS)\\S S*4   S&\\#\\#   4   S\S\&S    4
S+ jj5       r'S>S&\\#\\#   4   S\S\&S    4S, jjr(\S\)4S- j5       r*\S\+\\4   4S. j5       r,\S\-\\\4      4S/ j5       r.\S\+\\-\   4   4S0 j5       r/\SSS1\\0\14   S\&S    4S2 j5       r2\      S?SSS\\\4   S\S3\S\-S    4   S4\3S\S\4   S\S\4   S5\S\\R>                  4   S6\S\\R>                  4   SS 4S7 jj5       r4S8\5SS 4S9 jr6S8\5SS 4S: jr7\S\-\   4S; j5       r8S<r9U =r:$ )@r   C   a  Wraps a git commit object.

See :manpage:`gitglossary(7)` on "commit object":
https://git-scm.com/docs/gitglossary#def_commit_object

:note:
    This class will act lazily on some of its attributes and will query the value on
    demand only if it involves calling the git binary.
GIT_AUTHOR_DATEGIT_COMMITTER_DATEzi18n.commitencodingzUTF-8committype)treeauthorauthored_dateauthor_tz_offset	committercommitted_datecommitter_tz_offsetmessageparentsencodinggpgsighexshar;   Nrepor,   binshar3   r4   r5   r6   r7   r8   r9   r:   r<   r=   returnc                 N  > [         TU ]  X5        X l        Ub(  [        U[        5      (       d   S[        U5      -  5       eUb  X0l        Ub  X@l        Ub  XPl        Ub  X`l	        Ub  Xpl
        Ub  Xl        U	b  Xl        U
b  Xl        Ub  Xl        Ub  Xl        Ub  Xl        gg)a  Instantiate a new :class:`Commit`. All keyword arguments taking ``None`` as
default will be implicitly set on first query.

:param binsha:
    20 byte sha1.

:param tree:
    A :class:`~git.objects.tree.Tree` object.

:param author:
    The author :class:`~git.util.Actor` object.

:param authored_date: int_seconds_since_epoch
    The authored DateTime - use :func:`time.gmtime` to convert it into a
    different format.

:param author_tz_offset: int_seconds_west_of_utc
    The timezone that the `authored_date` is in.

:param committer:
    The committer string, as an :class:`~git.util.Actor` object.

:param committed_date: int_seconds_since_epoch
    The committed DateTime - use :func:`time.gmtime` to convert it into a
    different format.

:param committer_tz_offset: int_seconds_west_of_utc
    The timezone that the `committed_date` is in.

:param message: string
    The commit message.

:param encoding: string
    Encoding of the message, defaults to UTF-8.

:param parents:
    List or tuple of :class:`Commit` objects which are our parent(s) in the
    commit dependency graph.

:return:
    :class:`Commit`

:note:
    Timezone information is in the same format and in the same sign as what
    :func:`time.altzone` returns. The sign is inverted compared to git's UTC
    timezone.
Nz(Tree needs to be a Tree instance, was %s)super__init__r@   
isinstancer   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   )selfr?   r@   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   	__class__s                 eC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\git/objects/commit.pyrD   Commit.__init__m   s    ~ 	&dD))b+UX\]aXb+bb)I K$!.'$4! &N%"0*':$"L"L$M K     )r   .c                 ,    [        UR                  5      $ N)tupler;   )clsr1   s     rH   _get_intermediate_itemsCommit._get_intermediate_items   s    V^^$$rJ   c                     [        5       nUR                  U5        UR                  5       nUR                  S5        UR                  R                  [        U R                  XC5      5      nUR                  $ )zCalculate the sha of a commit.

:param repo:
    :class:`~git.repo.base.Repo` object the commit should be part of.

:param commit:
    :class:`Commit` object for which to generate the sha.
r   )	r   
_serializetellseekodbstorer   r2   r@   )rN   r?   r1   stream	streamlenistreams         rH   _calculate_sha_Commit._calculate_sha_   sV     &!KKM	A((..9!EF~~rJ   kwargsc                 T   U R                    Vs0 s H  o"[        X5      _M     nnU H  nX@R                   ;  d  M  [        S5      e   UR                  U5        U R                  " U R
                  U R                  40 UD6nU R                  U R
                  U5      Ul        U$ s  snf )zCreate new commit object from an existing commit object.

Any values provided as keyword arguments will replace the corresponding
attribute in the new object.
zinvalid attribute name)		__slots__getattr
ValueErrorupdaterG   r?   NULL_BIN_SHArZ   r@   )rF   r\   kattrsattrname
new_commits         rH   replaceCommit.replace   s     /3nn=nGD$$n=H~~- !9::  	V^^DIIt/@/@JEJ
 00JG
 >s   B%attrc                   > U[         R                  ;   aa  U R                  R                  R	                  U R
                  5      u  p#U l        nU R                  [        UR                  5       5      5        g [        TU ]-  U5        g rL   )r   r^   r?   rU   rW   r@   size_deserializer   readrC   _set_cache_)rF   ri   _binsha	_typenamerW   rG   s        rH   rn   Commit._set_cache_   s\    6###48IIMM4H4H4U1G	6gfkkm45G%rJ   c                 B    [        U R                  U R                  5      $ rL   )r   r5   r6   rF   s    rH   authored_datetimeCommit.authored_datetime   s    d00$2G2GHHrJ   c                 B    [        U R                  U R                  5      $ rL   )r   r8   r9   rs   s    rH   committed_datetimeCommit.committed_datetime   s    d1143K3KLLrJ   c                     [        U R                  [        5      (       a  U R                  R                  SS5      S   $ U R                  R                  SS5      S   $ )z):return: First line of the commit message
r   r      
)rE   r:   strsplitrs   s    rH   summaryCommit.summary  sM     dllC((<<%%dA.q11<<%%eQ/22rJ   pathsc                 4   U(       aJ  [        U R                  R                  R                  " U R                  SU40 UD6R                  5       5      $ [        U R                  R                  R                  " U R                  40 UD6R                  5       5      $ )a  Count the number of commits reachable from this commit.

:param paths:
    An optional path or a list of paths restricting the return value to commits
    actually containing the paths.

:param kwargs:
    Additional options to be passed to :manpage:`git-rev-list(1)`. They must not
    alter the output style of the command, or parsing will yield incorrect
    results.

:return:
    An int defining the number of reachable commits
--)lenr?   gitrev_listr>   
splitlines)rF   r   r\   s      rH   countCommit.count
  sk    " tyy}}--dkk4Q&Q\\^__499==))$++@@KKMNNrJ   c                 L    U R                   R                  R                  U 5      $ )z
:return:
    String describing the commits hex sha based on the closest
    :class:`~git.refs.reference.Reference`.

:note:
    Mostly useful for UI purposes.
)r?   r   name_revrs   s    rH   r   Commit.name_rev  s     yy}}%%d++rJ   revr+   c                 "   SU;   a  [        S5      eS/nU(       aE  [        U[        [        R                  45      (       a  U4nO[        U5      nUR                  U5        UR                  R                  " X%4SS0UD6nU R                  X5      $ )a  Find all commits matching the given criteria.

:param repo:
    The :class:`~git.repo.base.Repo`.

:param rev:
    Revision specifier. See :manpage:`git-rev-parse(1)` for viable options.

:param paths:
    An optional path or list of paths. If set only :class:`Commit`\s that
    include the path or paths will be considered.

:param kwargs:
    Optional keyword arguments to :manpage:`git-rev-list(1)` where:

    * ``max_count`` is the maximum number of commits to fetch.
    * ``skip`` is the number of commits to skip.
    * ``since`` selects all commits since some date, e.g. ``"1970-01-01"``.

:return:
    Iterator yielding :class:`Commit` items.
prettyz<--pretty cannot be used as parsing expects single sha's onlyr   
as_processT)
r`   rE   r|   osr*   rM   extendr   r   _iter_from_process_or_stream)rN   r?   r   r   r\   	args_list	paths_tupprocs           rH   
iter_itemsCommit.iter_items+  s    < v[\\ &*F	%#r{{!344"H	!%L	Y' xx  KDKFK//;;rJ   c                 z    UR                  SS5      nUS:X  a  SnX2S'   U R                  " U R                  X40 UD6$ )aK  Iterate *all* parents of this commit.

:param paths:
    Optional path or list of paths limiting the :class:`Commit`\s to those that
    contain at least one of the paths.

:param kwargs:
    All arguments allowed by :manpage:`git-rev-list(1)`.

:return:
    Iterator yielding :class:`Commit` objects which are parents of ``self``
skipr   r   )getr   r?   )rF   r   r\   r   s       rH   iter_parentsCommit.iter_parents_  sA     zz&!$19Dvtyy$@@@rJ   c           	         S[         [           S[        4S jnU R                  (       dL  U R                  R                  R                  U R                  SSSSSS9R                  5       SS nU" U5      nO_U R                  R                  R                  U R                  S	   R                  U R                  SSSSS
9R                  5       nU" U5      n[        R                  " U R                  U5      $ )zCreate a git stat from changes between this commit and its first parent
or from all changes done if this is the very first commit.

:return:
    :class:`Stats`
linesrA   c           
          Sn[        X [        U 5      S-  S  5       HD  u  p#UR                  S5      S   S   nUR                  S5      u  pVnX< SU< SU< SU< S3-  nMF     U$ )N    	r   rz   )zipr   r}   )r   text	file_infolinechange_type
insertions	deletionsfilenames           rH   process_lines#Commit.stats.<locals>.process_lines}  so    D#&uCJ!O4E.F#G	'ood3A6r:48JJt4D1k:yRZ[[ $H KrJ   r   T)numstat
no_renamesrootrawr   Nr   )r   r   r   )r!   r|   r;   r?   r   	diff_treer>   r   diffr   _list_from_string)rF   r   r   r   s       rH   statsCommit.statst  s    	c 	s 	 ||IIMM++T4DtQU , jl12E !'DIIMM&&Q&&T4TX^b ' jl  !'D&&tyy$77rJ   c                     [         R                  " S[        SS9  U R                  R	                  5        VVs0 s H
  u  pXS   _M     snn$ s  snnf )a4  Deprecated. Get the trailers of the message as a dictionary.

:note:
    This property is deprecated, please use either :attr:`trailers_list` or
    :attr:`trailers_dict`.

:return:
    Dictionary containing whitespace stripped trailer information.
    Only contains the latest instance of each trailer key.
zWCommit.trailers is deprecated, use Commit.trailers_list or Commit.trailers_dict insteadr   )
stacklevelr   )warningswarnDeprecationWarningtrailers_dictitems)rF   rc   vs      rH   trailersCommit.trailers  sL     	e	

 %)$6$6$<$<$>?$>DAQ4$>???s   Ac                    / SQnU R                   R                  R                  US[        S9nUR	                  [        U R                  5      R                  5       5      S   R                  S5      nUR                  5       nU(       d  / $ / nUR                  S5       HF  nUR                  SS5      u  pgUR                  UR                  5       UR                  5       45        MH     U$ )	a  Get the trailers of the message as a list.

Git messages can contain trailer information that are similar to :rfc:`822`
e-mail headers. See :manpage:`git-interpret-trailers(1)`.

This function calls ``git interpret-trailers --parse`` onto the message to
extract the trailer information, returns the raw trailer data as a list.

Valid message with trailer::

    Subject line

    some body information

    another information

    key1: value1.1
    key1: value1.2
    key2 :    value 2 with inner spaces

Returned list will look like this::

    [
        ("key1", "value1.1"),
        ("key1", "value1.2"),
        ("key2", "value 2 with inner spaces"),
    ]

:return:
    List containing key-value tuples of whitespace stripped trailer information.
)r   zinterpret-trailersz--parseT)r   rY   r   utf8rz   :r   )r?   r   executer   communicater|   r:   encodedecodestripr}   append)rF   cmdr   trailertrailer_listtkeyvals           rH   trailers_listCommit.trailers_list  s    B 7"&))--"7"7 #8 #

 ''DLL(9(@(@(BCAFMMfU--/It$AwwsAHCciik :; % rJ   c                     [        [        5      nU R                   H  u  p#X   R                  U5        M     [	        U5      $ )ag  Get the trailers of the message as a dictionary.

Git messages can contain trailer information that are similar to :rfc:`822`
e-mail headers. See :manpage:`git-interpret-trailers(1)`.

This function calls ``git interpret-trailers --parse`` onto the message to
extract the trailer information. The key value pairs are stripped of leading and
trailing whitespaces before they get saved into a dictionary.

Valid message with trailer::

    Subject line

    some body information

    another information

    key1: value1.1
    key1: value1.2
    key2 :    value 2 with inner spaces

Returned dictionary will look like this::

    {
        "key1": ["value1.1", "value1.2"],
        "key2": ["value 2 with inner spaces"],
    }


:return:
    Dictionary containing whitespace stripped trailer information, mapping
    trailer keys to a list of their corresponding values.
)r   listr   r   dict)rF   dr   r   s       rH   r   Commit.trailers_dict  s8    F **HCFMM# +AwrJ   proc_or_streamc              #     #    [        US5      (       a*  [        [        U5      nUR                  b  UR                  nO#[        US5      (       a  [        [        U5      nUnWR
                  n U" 5       nU(       d  ObUR                  5       n[        U5      S:  a  UR                  SS5      u  pg[        U5      S:X  d
   SU-  5       eU " U[        U5      5      v   Mq  [        US5      (       a  [        [        U5      n[        U5        gg7f)aI  Parse out commit information into a list of :class:`Commit` objects.

We expect one line per commit, and parse the actual commit information directly
from our lighting fast object database.

:param proc:
    :manpage:`git-rev-list(1)` process instance - one sha per line.

:return:
    Iterator supplying :class:`Commit` objects
waitNreadline(   r   zInvalid line: %s)hasattrr&   r   stdoutr   r   r   r   r}   r   r   )rN   r?   r   rW   r   r   r>   _s           rH   r   #Commit._iter_from_process_or_stream   s     ( >6**!%8N$$0'..^Z00!"n5N#F??:DZZ\F6{R JJtQ/	 v;"$A&86&AA$dJv.//   >6**!%8N^, +s   DDparent_commitsheadauthor_datecommit_datec
                    Uc   UR                   R                  /nO+U H%  n
[        X5      (       a  M  [        SU
< SU  35      e   UR	                  5       n[
        R                  nU=(       d    [        R                  " U5      nU=(       d    [        R                  " U5      n[        [        5       5      n[        =(       a    [        5       R                  S:  nU(       a  [        O[         nUR#                  U R$                  S5      nU(       a  ['        U5      u  nnOU(       a  ['        U5      u  nnOXnnUR#                  U R(                  S5      nU	(       a  ['        U	5      u  nnOU(       a  ['        U5      u  nnOXnnU R*                  R-                  S5      u  nnUR/                  UUU R0                  5      n[        U[2        5      (       d  [5        S5      e[        U[2        5      (       a  UR7                  U5      nU " UU R8                  UUUUUUUUUU5      nU R;                  UU5      Ul        U(       a!  SSKn UR                   RA                  UUS9  U$ U$ ! [         a    / n GN,f = f! [         a^    URB                  RD                  RG                  UUR                   RH                  US	U-  S9nUR                   RK                  US
U-  S9   U$ f = f)a  Commit the given tree, creating a :class:`Commit` object.

:param repo:
    :class:`~git.repo.base.Repo` object the commit should be part of.

:param tree:
    :class:`~git.objects.tree.Tree` object or hex or bin sha.
    The tree of the new commit.

:param message:
    Commit message. It may be an empty string if no message is provided. It will
    be converted to a string, in any case.

:param parent_commits:
    Optional :class:`Commit` objects to use as parents for the new commit. If
    empty list, the commit will have no parents at all and become a root commit.
    If ``None``, the current head commit will be the parent of the new commit
    object.

:param head:
    If ``True``, the HEAD will be advanced to the new commit automatically.
    Otherwise the HEAD will remain pointing on the previous commit. This could
    lead to undesired results when diffing files.

:param author:
    The name of the author, optional.
    If unset, the repository configuration is used to obtain this value.

:param committer:
    The name of the committer, optional.
    If unset, the repository configuration is used to obtain this value.

:param author_date:
    The timestamp for the author field.

:param commit_date:
    The timestamp for the committer field.

:return:
    :class:`Commit` object representing the new commit.

:note:
    Additional information about the committer and author are taken from the
    environment or from the git configuration. See :manpage:`git-commit-tree(1)`
    for more information.
NzParent commit 'z' must be of type r   r   .z)conf_encoding could not be coerced to str)logmsgzcommit (initial): %szcommit: Switching to %s)&r   r1   r`   rE   config_readerr   environr   r7   r4   intr   r	   r
   tm_isdstr   r   r   env_author_dater   env_committer_dateconf_encodingr}   	get_valuedefault_encodingr|   	TypeErrorr3   rb   rZ   r@   git.refs
set_commitrefsHeadcreaterefset_reference)rN   r?   r3   r:   r   r   r4   r7   r   r   pcrenv	unix_timeis_dstoffsetauthor_date_strauthor_timeauthor_offsetcommitter_date_strcommitter_timecommitter_offsetenc_section
enc_optionr   rf   r   masters                               rH   create_from_treeCommit.create_from_tree1  s   v !$"&))"2"2!3 $!!))$qe;McU%STT $ !jj4!4	+5<<+ K	6ik22Q6"''#"5"5r:)3K)@&K)3O)D&K)2K !WWS%;%;R@/9+/F,N,/9:L/M,N,/8,N #&"3"3"9"9#">Z[*c>R>RS---GHH dC  99T?D 

  //jA
 [		$$Z$@ zA  $!#$f  	[ --IIMM1G;	 .  		''7PSY7Y'Z 	[s$   I% I8 %I54I58A$K K rW   c           
         UR                   nU" SU R                  -  R                  S5      5        U R                   H  nU" SU-  R                  S5      5        M     U R                  nUR
                  nU R                  nSnU" USUUR                  U R                  [        U R                  5      4-  R                  U R                  5      5        UR
                  nU" USUUR                  U R                  [        U R                  5      4-  R                  U R                  5      5        U R                  U R                  :w  a$  U" SU R                  -  R                  S5      5         U R                  S5      (       aV  U" S	5        U R                   R#                  S
5      R%                  S
5       H   nU" SU-   S
-   R                  S5      5        M"     U" S5        [)        U R*                  [,        5      (       a-  U" U R*                  R                  U R                  5      5        U $ U" U R*                  5        U $ ! [&         a     Ntf = f)Nztree %s
asciiz
parent %s
z%s %s <%s> %s %s
r4   r7   zencoding %s
r=   s   gpgsigrz    r{   )writer3   r   r;   r4   namer7   emailr5   r   r6   r<   r8   r9   r   __getattribute__r=   rstripr}   AttributeErrorrE   r:   r|   )	rF   rW   r  r   aanamecfmtsiglines	            rH   rR   Commit._serialize  s    {TYY&..w78A=1$,,W56  KKNN"GG&&%d&;&;< fT]]#	
 GG''%d&>&>? fT]]#	
 ==D111?T]]2::7CD	$$X..i #{{11$7==dCG3=4/77@A  D
 	e dllC(($,,%%dmm45  $,,  		s   /A,I 
IIc           
         UR                   n[        U R                  [        U" 5       R	                  5       S   5      [        R
                  S-  S5      U l        / U l        S n U" 5       nUR                  S5      (       d  UnO`U R                  R                  [        U 5      " U R                  [        UR	                  5       S   R                  S5      5      5      5        M  [        U R                  5      U l        UnU" 5       nU" 5       nUR                  S5      (       aT  U" 5       nUR                  S	5      (       a  U" 5       nUR                  S	5      (       a  M  UR                  S5      (       a  MT  U R                  U l        SU l        UnUR!                  5       nU(       a  US
S S:X  a6  XR#                  S	5      S-   S  R                  U R                  S5      U l        OUS
S S:X  a  XR#                  S	5      S-   S  S-   n	Sn
 U" 5       nU(       d  O%US
S S	:w  a  UR!                  5       nSn
O	XSS  -  n	M4  U	R%                  S5      R                  U R                  S5      U l        U
(       a  M  U" 5       R!                  5       nU(       a  M   ['        UR                  U R                  S5      5      u  U l        U l        U l         ['        UR                  U R                  S5      5      u  U l        U l        U l        UR;                  5       U l         U R<                  R                  U R                  S5      U l        U $ ! [.         a#    [0        R3                  SUU R                  SS9   Nf = f! [.         a#    [0        R3                  SUU R                  SS9   Nf = f! [.         a.    [0        R3                  SU R<                  U R                  SS9   U $ f = f)Nr      r   Ts   parentr   r
  s	   mergetag     r   
   s	   encoding ignore   s   gpgsig r{   Frg   z3Failed to decode author line '%s' using encoding %s)exc_infoz6Failed to decode committer line '%s' using encoding %sz/Failed to decode message '%s' using encoding %s)r   r   r?   r   r}   tree_idr3   r;   
startswithr   r2   r   rM   r   r<   r=   r   findr  r   r4   r5   r6   UnicodeDecodeError_loggererrorr7   r8   r9   rm   r:   )rF   rW   r   	next_lineparent_lineauthor_linecommitter_lineencbufsigis_next_headersigbufs               rH   rl   Commit._deserialize  s   ??Jxz/?/?/A!/D$Et||WYGY[]^		"*K)))44'	LLT
499jARARATUWAXA_A_`gAh6i jk  T\\*  ! J	""<00 
I&&t,,$J	 &&t,, ""<00 -- iik1RyL( #HHTNQ$6$8 9 @ @PX YQqZ'((4.1,./%7!&%ZF!a{d*$lln)-!":%C  "jj/66t}}hO!*""$C' c,	
 %[%7%7y%QR	"%	
 %^%:%:4==)%TU	#( {{}	<<..t}}iHDL K " 	MME	  	 " 	MMH	  	 " 	MMA	   	s6   8M 8M=  +N- *M:9M:=*N*)N*-4O%$O%c                     / nU R                   (       aP  [        R                  " SU R                   [        R                  5      nU H  nUR	                  [        U6 5        M     U$ )zSearch the commit message for any co-authors of this commit.

Details on co-authors:
https://github.blog/2018-01-29-commit-together-with-co-authors/

:return:
    List of co-authors for this commit (as :class:`~git.util.Actor` objects).
z^Co-authored-by: (.*) <(.*?)>$)r:   refindall	MULTILINEr   r   )rF   
co_authorsresultsr4   s       rH   r3  Commit.co_authorsx  sU     
<<jj1G
 "!!%.1 " rJ   )r4   r6   r5   r@   r8   r7   r9   r<   r=   r:   r;   rk   r3   )NNNNNNNNNNN)r   )NFNNNN);__name__
__module____qualname____firstlineno____doc__r   r   r   r   r2   r)   __annotations__r^   _id_attribute_r"   bytesr%   r   r   r   floatr|   rD   classmethodr#   rO   rZ   r   rg   rn   propertydatetimert   rw   r~   r*   r   r   r    r   r   r   r   r   r   r!   r   r   r   r   r   boolr  r   rR   rl   r3  __static_attributes____classcell__)rG   s   @rH   r   r   C   sG    (O- *M &D'(
&I Nh #'%)*./3(,+/26+/37%)#'X!X! X! D$J	X!
 eTk"X! S$Y'X!  e,X! %X! c4i(X! #4;/X! sE4'(X! x)4/0X! T	"X! c4i X! 
X! X!t %X %%:N % % 6 8   $  && & & I8#4#4 I I MH$5$5 M M 3sEz* 3 3O58H+=!=> Os OWZ O* 	,# 	, 	, 
 68	1<1< 3"5561< Xx112	1<
 1< 
(	1< 1<fA%(82D(D"E AVY A^fgo^p A* 8u 8 88 @$sCx. @ @$ 1tE#s(O4 1 1f %tCcN3 % %N .- .-eUWiHX .-]efn]o .- .-`  7;%)(,;?;?]] D#I] 	]
 dDN23] ] dEk"] u%] 4h&7&778] 4h&7&778] 
] ]B9 9X 9vf7 fx fT DK  rJ   )B__all__collectionsr   rA  ior   loggingr   r0  
subprocessr   r   sysr   r   r	   r
   r   r   gitdbr   git.cmdr   git.diffr   git.utilr   r   r   r   r   r   r3   r   utilr   r   r   r   r   r   typingr   r   r   r    r!   r"   r#   r$   r%   r&   version_infor)   typing_extensions	git.typesr*   r   r+   git.repor,   	getLoggerr6  r#  Objectr    rJ   rH   <module>rX     s    * #    	 	 " 
 = =     ? ?      v) * 

H
%JT[[0(L JrJ   