
    MBeRe                     j   d dl Z d dlmZ ddlmZmZ ddlmZ  edd      Z edd	      Z	 ed
d      Z
dZ e j                  d      Z e j                  d      Z e j                  dez   dz         Z e j                  dez   dz         Z e j                  d      Z e j                  d      Z e j                  dez   dz         Z e j                  dez   dz         Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d      Z e j                  d       Z  e j                  d!      Z! e j                  d"      Z" e j                  d#      Z# e j                  d$      Z$ e j                  d%      Z%eZ&eZ'eZ( e j                  d&      Z) e j                  d'      Z*eZ+ e j                  d(      Z, e j                  d)      Z- e j                  d*      Z. e j                  d+      Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?y)<    N)
namedtuple   )split_by_regexfindall_regex)
exceptionsheaderz4index_path old_path old_version new_path new_versiondiffzheader changes textChangezold new line hunkz(.+?)(?:	|:|  +)(.*)z^diff.* (.+) (.+)$z^Index: (.+)$z^--- $z^\+\+\+ z(^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@(.*)$z^([-+ ])(.*)$z^\*\*\* z ^\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*$z^\*\*\* (\d+),?(\d*) \*\*\*\*$z^--- (\d+),?(\d*) ----$z^([-+ !]) (.*)$z^(\d+),?(\d*)([acd])$z^.$z^([ad])(\d+) ?(\d*)$z!^(\d+),?(\d*)([acd])(\d+),?(\d*)$z^---$z^([><]) (.*)$z^diff --git a/(.+) b/(.+)$z'^index ([a-f0-9]+)..([a-f0-9]+) ?(\d*)$z
^--- (.+)$z^\+\+\+ (.+)$z^(new|deleted) file mode \d{6}$z"^Binary files (.+) and (.+) differz=== (.+)z#\((?:working copy|revision (\d+))\)z.*(\(.*\))$z^RCS file: (.+)(?:,\w{1}$|$)z(.+)\t([\d.]+)z:([\d.]+)\t(.+)z^diff.* (.+):(.*) (.+):(.*)$c              #     K   	 | j                         }|D cg c]%  }t        |      dk(  r|n|j                         d   ' }}t        t        t
        t        t        t        g}|D ]  }t        ||      }t        |      dkD  s n D ]A  }dj                  |      dz   }t        |      }t        |      }	|s|	s2t        ||	|       C y # t        $ r | }Y w xY wc c}w w)Nr   r   
)r   changestext)
splitlinesAttributeErrorlenunified_header_indexdiffcmd_headercvs_header_rcsgit_header_indexcontext_header_old_lineunified_header_old_liner   joinparse_header
parse_diffdiffobj)
r   linesxcheckcdiffsr	   difftexthds
             2lib/python3.12/site-packages/whatthepatch/patch.pyparse_patchr&   B   s     ! ?DD#a&A+Q1<<>!#44DED 	E  ua(u:>
  >99T?T)tAH==>+  
 Es?   C$C C$*CAC$6C$;C$CC$CC$c                 6    t        |       }|t        |       }|S )N)parse_scm_headerparse_diff_header)r   r#   s     r%   r   r   b   s     Ayd#H    c                 F   	 | j                         }t        t        ft        t
        ft        t
        ft        t        fg}|D ]  \  }}t        ||      }t        |      dkD  s!t        |t              }t        |      dkD  r ||      }|rt|j                  }|j                  }	|j                  d      r|dd  }|	j                  d      r|	dd  }	t        |j                   ||j"                  |	|j$                        c S |c S  ||      }|c S  y # t        $ r | }Y w xY w)Nr   a/   b/
index_pathold_pathold_versionnew_pathnew_version)r   r   r   parse_git_headerold_cvs_diffcmd_headerparse_cvs_headerr   svn_header_indexparse_svn_headerr   r   git_diffcmd_headerr1   r3   
startswithr   r0   r2   r4   )
r   r   r   regexparserr!   git_optresr1   r3   s
             r%   r(   r(   i   s0   !
 
+,	!12	)*	+,	E  veU+u:>#E+=>G7|aUm"||H"||H**40#+AB<**40#+AB<!#&>>!)$'OO!)$'OO  J UmJ36 K  s   D D D c                     	 | j                         }t        t        ft        t
        ft        t        ft        t        fg}|D ])  \  }}t        ||      }t        |      dkD  s! ||      c S  y # t        $ r | }Y jw xY wNr   )r   r   unified_header_new_lineparse_unified_headerr   parse_context_headerr   parse_diffcmd_headergit_header_new_liner5   r   r   )r   r   r   r<   r=   r!   s         r%   r)   r)      s    !
 
!"67	 "67	-. 
./E  !veU+u:>%= !
 %  s   A/ /A=<A=c                    	 | j                         }t        t        ft        t
        ft        t        ft        t        ft        t        fg}|D ])  \  }}t        ||      }t        |      dkD  s! ||      c S  y # t        $ r | }Y uw xY wrA   )r   r   unified_hunk_startparse_unified_diffcontext_hunk_startparse_context_diffdefault_hunk_startparse_default_diffed_hunk_startparse_ed_diffrcs_ed_hunk_startparse_rcs_ed_diffr   r   )r   r   r   hunkr=   r!   s         r%   r   r      s    !
 
/0	/0	/0	&	-.E  !feT*u:>%= !  s   A: :BBc                    	 | j                         }d }d }d }d }d }d }|D ]D  }t        j                  |      }	|	r#|	j	                  d      }|	j	                  d      }>t
        j                  |      }
|
r#|
j	                  d      }|
j	                  d      }xt        j                  |      }|r|j	                  d      }t        j                  |      }|r|j	                  d      }t        j                  |      }|r"|j	                  d      }|j	                  d      }|s|s	|j                  d      r|dd  }|j                  d      r|dd  }t        d ||||      c S  |ra|r_|r]|r[t        d       |j                  d      r|dd  }|j                  d      r|dd  }t        d |dk(  rdn|||dk(  rd|      S ||      S y # t        $ r | }Y w xY w)	Nr   r-   r,   r.   r/   zreturning from dumb path0000000z	/dev/null)r   r   r:   matchgroupr   git_header_old_linerF   git_header_binary_filer;   r   print)r   r   r2   r4   r1   r3   cmd_old_pathcmd_new_pathlinehmgonbinarys                 r%   r5   r5      s   ! KKHHLL '%%d+88A;L88A;L""4(''!*K''!*K  %%d+wwqzH%%d+wwqzH'--d3||AH||AH""4(#AB<""4(#AB<!'!' C'V ()""4('+L""4('+L %09$<[,#$/9$<[#
 	
 CO#
 	
 M  s   G GGc                    	 | j                         }t        |t              }t	        |      dk(  ry t	        |      dkD  rt        j                  |d         }|d= |s-t        |      }|s=t        |j                  d      |j                  d      d |j                  d      d       S |j                  }|j                  }|rCt        j                  |      }|r|j                  d      rt        |j                  d            }n|rt        j                  |      }|ro|d t	        |j                  d              }t        j                  |j                  d            }|r+|j                  d      rt        |j                  d            }|j                  }	|j                  }
|
rMt        j                  |j                        }|r|j                  d      rt        |j                  d            }
n|	rt        j                  |	      }|ro|	d t	        |j                  d              }	t        j                  |j                  d            }|r+|j                  d      rt        |j                  d            }
t!        |      t        k7  rd }t!        |
      t        k7  rd }
t        |j                  d      |||	|
      S y # t        $ r | }Y w xY w)Nr   r   r/   )r   r   r   r8   r   rU   r)   r   rV   r1   r2   svn_header_timestamp_versionintsvn_header_timestampr3   r4   type)r   r   headersidiff_headeropathoveroendtsnpathnvernends               r%   r9   r9     sl   ! E#34G
7|q
e*q.""58,!H'.771:    $$&&/55d;D

14::a=)%++E2B1RXXa[!1 12399"((1+FDJJqMtzz!}-D$$&&/55k6M6MND

14::a=)%++E2B1RXXa[!1 12399"((1+FDJJqMtzz!}-D:D:Dwwqz
 	
 C  s   K KKc                    	 | j                         }t        |t              }t        |t              }|rit        |      dkD  rYt        j                  |d         }|d= |s-t        |      }|r|j                  }|rQt        j                  |      }t        j                  |      }|r|j                  d      }n|r|j                  d      }|j                  }	|	rQt        j                  |	      }
t        j                  |	      }|
r|
j                  d      }	n|r|j                  d      }	t        |j                  d      |j                  ||j                   |	      S t        |j                  d      |j                  d      d |j                  d      d       S y |rt        |      dkD  rt        j                  |d         }|d= |s-t        j                  |d         }|s=t        |j                  d      |j                  d      d |j                  d      d       S t        |       |j                  d      r|j                  d      nd }|j                  d      r|j                  d      nd }	t        |j                  d      |j                  d      ||j                  d      |	      S y # t        $ r | }Y w xY w)Nr   r-   r   r/         )r   r   r   r   r6   r   cvs_header_indexrU   r)   r2   cvs_header_timestampcvs_header_timestamp_colonrV   r4   r   r1   r3   )r   r   rg   headers_oldrh   ri   rk   rl   oend_cro   rp   nend_cr$   s                r%   r7   r7   S  sz   ! E>2G'=>K%j1n &&uQx0Aa+E2K"../55d;D7==dCF#zz!}%||A"../55d;D7==dCF#zz!}%||A wwqz(11 $(11 $  771:   J = 
%j1n &&uQx0Aa&,,U1X6A wwqzWWQZ $WWQZ $  e$!"1771:D!"1771:D771:    ]  s   J6 6KKc                 V   	 | j                         }t        |t              }t	        |      dk(  ry t	        |      dkD  rZt        j                  |d         }|d= |r.t        d |j                  d      d |j                  d      d       S t	        |      dkD  rZy # t        $ r | }Y w xY wNr   r   r-   r/   )r   r   r   r   r   rU   r   rV   )r   r   rg   r$   s       r%   rE   rE     s    ! E>2G
7|q
e*q.  q*!H   	 e*q. %  s   B B('B(c                    	 | j                         }t        |t              }t	        |      dk(  ry t	        |      dkD  rt
        j                  |d         }|d= |rt        j                  |d         }|d= |rp|j                  d      }t	        |      dk(  rd }|j                  d      }t	        |      dk(  rd }t        d |j                  d      ||j                  d      |      S t	        |      dkD  ry # t        $ r | }Y w xY wr{   )	r   r   r   rB   r   r   rU   rV   r   r   r   rg   r_   r`   rk   ro   s          r%   rC   rC        ! E#:;G
7|q
e*q.#))%(3!H'--eAh7Aawwqzt9>Dwwqzt9>D#WWQZ $WWQZ $  e*q.. =     C9 9DDc                    	 | j                         }t        |t              }t	        |      dk(  ry t	        |      dkD  rt        j                  |d         }|d= |rt        j                  |d         }|d= |rp|j                  d      }t	        |      dk(  rd }|j                  d      }t	        |      dk(  rd }t        d |j                  d      ||j                  d      |      S t	        |      dkD  ry # t        $ r | }Y w xY wr{   )	r   r   r   r   r   rU   context_header_new_linerV   r   r}   s          r%   rD   rD     r~   r   c           	      ,   	 | j                         }d}d}d}d}d}d}t               }t        |t              }	t        |	      D ]  \  }
}t        |      sd}d}t        |      dkD  s&t        j                  |d         }t        j                  |d         }|d= |rt        |j                  d            }t        |j                  d            dkD  r!t        |j                  d            |z
  dz   }nd}t        |j                  d            }t        |j                  d            dkD  r!t        |j                  d            |z
  dz   }nd}n|r|j                  d      }|j                  d      }|dk(  r0||k7  s|dk(  r&|j                  t        ||z   d ||
             |dz  }n4|dk(  r/||k7  s|dk(  r%|j                  t        d ||z   ||
             |dz  }t        |      dkD  r t        |      dkD  r|S y # t        $ r | }Y  w xY w)Nr   r   r-   rr      <>)r   r   listr   rL   	enumerater   rU   default_changerd   rV   appendr
   )r   r   oldnewold_lennew_lenrrh   r   hunkshunk_nrR   r#   r    kindr\   s                   r%   rM   rM     s    ! C
CGG	A	AfG5"45E!%(  4y$i!m"((a1A$$T!W-AQ!''!*oqwwqz?Q&!!''!*o3a7GG!''!*oqwwqz?Q&!!''!*o3a7GGwwqzwwqz3;ALAFNN6#'4v#FGFAS[a7la1fNN6$av#FGFA5 $i!m D 7|ae  s   H HHc           	         	 | j                         }d}d}d}d}t               }t        |t              }t        |      D ]  \  }}	d}d}t        |	      dkD  rt        j                  |	d         }
|	d= |
rt        |
j                  d            }t        |
j                  d            dkD  rt        |
j                  d            }nd}t        |
j                  d            }t        |
j                  d            dkD  rt        |
j                  d            }nd}d }
nt        |	      dkD  rt        |	      dkD  st        j                  |	d         }|r|j                  d      }|j                  d      }d }|dk(  r0|k7  s|dk(  r&|j                  t        ||z   d ||             |dz  }nq|dk(  r0|k7  s|dk(  r&|j                  t        d ||z   ||             |dz  }n<|dk(  r7|k7  r(|k7  r#|j                  t        ||z   ||z   ||             |dz  }|dz  }|	d= t        |	      dkD  r t        |      dkD  r|S y # t        $ r | }Y Dw xY w)	Nr   r   r-   rs   rr   -+ )r   r   r   r   rH   r   r   rU   rd   rV   unified_changer   r
   )r   r   r   r   r   rh   r   r   r   rR   r#   r   r   r    r   r\   s                   r%   rI   rI   ?  sK   ! C
C	A	AfG5"45E!%( *$i!m"((a1AQ!''!*oqwwqz?Q&!!''!*oGG!''!*oqwwqz?Q&!!''!*oGG# $i!m& $i!m$$T!W-Awwqzwwqz3;ALAFNN6#'4v#FGFAS[a7la1fNN6$av#FGFAS[G|WvcAgsQwf'MNFAFAQ' $i!m/*X 7|au  s   I IIc           	      
   	 | j                         }d}d}d}d}t               }t        |t              }t        |      D ]  \  }}	t        |	      sd}d}t        |	t              }
t        |
      dk7  rt        j                  d|      |
d   }|
d   }t        |      dkD  rt        j                  |d         }|d= |s,t        |j                  d            }t        |j                  d            dz   |z
  }t        |      dkD  rYt        j                  |d         }|d= |s,t        |j                  d            }t        |j                  d            dz   |z
  }	 	 t        |      dkD  rt        |      dk(  r d}t        |      dkD  rt        j                  |d         }|d= |s,|j                  d      }|j                  d      }|dk(  r0|k7  s|dk(  r&|j                  t!        ||z   d ||             |dz  }nj|dk(  rB|k7  r|k7  s
|dk(  s|dk(  r.|j                  t!        ||z   ||z   ||             |dz  }|dz  }n#|dk(  s|d	k(  rt        j                  ||z   |      t        |      dkD  rAt        |      dk(  rt        |      dkD  r d}t        |      dkD  rt        j                  |d         }|d= |s,|j                  d      }|j                  d      }|dk(  r0|k7  s|dk(  r&|j                  t!        d ||z   ||             |dz  }nj|dk(  rB|k7  r|k7  s
|dk(  s|dk(  r.|j                  t!        ||z   ||z   ||             |dz  }|dz  }n#|dk(  s|d	k(  rt        j                  ||z   |      t        |      dkD  r_t        |      dkD  sot        |      dkD  st        j                  |d         }t        j                  |d         }d }d }|r"|j                  d      }|j                  d      }|r"|j                  d      }|j                  d      }|s	|s|d= |d= n|dk(  r>|dk(  r9k(  r4|j                  t!        ||z   ||z   ||             |dz  }|dz  }|d= |d= n||dk(  s|d	k(  r3|k7  s|dk(  r)|j                  t!        ||z   d |             |dz  }|d= n?|dk(  s|d	k(  r3|k7  s|dk(  r)|j                  t!        d ||z   |             |dz  }|d= n y t        |      dkD  st        |      dkD  rf t        |      dkD  r|S y # t        $ r | }Y 4w xY w)
Nr   r-   zContext diff invalidr   z'Got unexpected change in removal hunk: r   r   r   !)r   r   r   r   rJ   r   r   context_hunk_newr   ParseExceptioncontext_hunk_oldrU   rd   rV   context_changer   r
   )r   r   r   r   jkr   r   r   rR   partsold_hunknew_hunkr_   r   r`   r   msgr    r   r\   ocncokindnkindolinenlines                              r%   rK   rK     se   ! C
C	A	AfG5"45E!%( y4yt%56u:?++,BFKK88(ma &&x{3Aaggaj/C!''!*o)C/Gh-!#$**8A;7QK!''!*oaggaj/A-3 x=1X!!3;Ch-!#"((!5QKwwqzwwqz3;ALAFNN6#'4v#FGFAS['\a7lQ!q&NN6#'37D&#IJFAFAS[DCK$33C$JGG) h-!#, x=A#h-!"3;Ch-!#"((!5QKwwqzwwqz3;ALAFNN6$av#FGFAS['\a7lQ!q&NN6#'37D&#IJFAFAS[DCK$33C$JGG) h-!#*  (maCMA$5%%hqk2B%%hqk2BEE"QKQK#%3,5E>vcAgsQwvFGQQQKQK##1<16vcAgtUFCDQQK##1<16vdC!GUFCDQQKA (maCMA$5syv 7|aS  s   T8 8UUc           	         	 | j                         }d}d}d}d}d}t               }t        |t              }|j                          t        |      D ]  \  }	}
t        |
      sd}d}t        |
      dkD  s&t        j                  |
d         }|
d= |s-t        |j                  d            }t        |j                  d            rt        |j                  d            n|}|j                  d      }|dk(  r=d}||k\  r5|j                  t        ||z   d d |	             |dz  }|dz  }|dz  }||k\  r5t        |
      dkD  rt        j                  |
d         }|sw|dk(  rrd}||k\  r5|j                  t        ||z   d d |	             |dz  }|dz  }|dz  }||k\  r5|j                  t        d ||z
  |z   |z   |z   |
d   |	             |dz  }|dz  }|s3|dk(  r.|j                  t        d ||z
  |z   dz   |
d   |	             |dz  }|
d= t        |
      dkD  rt        |
      dkD  r t        |      dkD  r|S y # t        $ r | }Y >w xY w)Nr   r   r-   rs   r$   r    a)r   r   r   r   rN   reverser   r   rU   rd   rV   r   r
   ed_hunk_end)r   r   r   r   r   r   rh   r   r   r   rR   r_   old_end	hunk_kindes                  r%   rO   rO     sv   ! C	A	A	A	AfG5-0E	MMO!%( ,4y$i!m##DG,AQaggaj/C),QWWQZc!''!*ocG
ICnNN6#'4v#FGFAFAqLG	 n
 d)a-%%d1g.Y#-A!S.vcAgtT6'JKQQ1	 "S. NN6$a!a!0CT!Wf#VWFAFAY#-NN6$a!aa&#RSFAG' d)a-) $i!m,\ 7|a  s   I IIc           	      J   	 | j                         }d}d}d}d}t               }t        |t              }t        |      D ]?  \  }}	t        |	      sd}t        |	      dkD  s$t        j                  |	d         }
|	d= |
s-|
j                  d      }t        |
j                  d            }t        |
j                  d            }|dk(  re||dz   z  }||z  }|dkD  rt        |	      dkD  r|j                  t        d ||z   |	d   |             |dz  }|dz  }|	d= |dkD  rOt        |	      dkD  rDn?|dk(  r:||z  }|dkD  r0|j                  t        ||z   d d |             |dz  }|dz  }|dkD  r0t        |	      dkD  rB t        |      dkD  r|S y # t        $ r | }Y w xY w)Nr   r   r-   rs   r   r$   )r   r   r   r   rP   r   r   rU   rV   rd   r   r
   )r   r   r   r   sizetotal_change_sizer   r   r   rR   r_   r   s               r%   rQ   rQ   S  s   ! C	ADfG5"34E!%( "t9Ad)a-%++DG4GGGAJ	!''!*o1771:#,q00C%-%(s4y1}vdC!GT!Wf'MNQ	 G (s4y1} #%%-%(vcAgtT6'JKQ	 (/ d)a-"> 7|a[  s   F F"!F")@recollectionsr   snippetsr   r    r   r   r   r
   file_timestamp_strcompiler   r   r   rB   rH   r   r   r   rJ   r   r   r   rN   r   rP   rL   default_hunk_midr   r:   r   rW   rF   git_header_file_moderX   bzr_header_indexbzr_header_old_linebzr_header_new_liner8   rc   re   rt   r   ru   rv   r6   r&   r   r(   r)   r   r5   r9   r7   rE   rC   rD   rM   rI   rK   rO   rQ    r*   r%   <module>r      s   
 " 3 	HT	V
V2
3	H1	2,  01!rzz/2 $"**X0B%BS%HI $"**[3E%E%KL RZZ KL O,$"**[3E%E%KL $"**W/A%AC%GH RZZ CD 2::?@ 2::89 -.

34bjjBJJ67 RZZ DE 2::g& O,
  RZZ <= 2::HI  bjj.  bjj!12 !rzz"DE #$HI 2::j) - - ' )rzz*PQ !rzz.1 ' ;<!rzz"34 'RZZ(:; #$BC >@(V0!(IXDNQh0!H!H5p=@L^BJ1r*   