
    MBe                     d    d dl 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
mZ d Zd
dZd Zdd	Zy)    N   )patch)SubprocessExceptionHunkApplyException)whichremovec                    	 t        | t        j                        r| g} | D ]  }|j                  j                  dk(  rg }n8t        |j                  j                        5 }|j                         }ddd       t        |      }t        |j                  j                  d      5 }|j                  |       ddd        y# 1 sw Y   RxY w# 1 sw Y   xY w)z Not ready for use yet z	/dev/nullNw)

isinstancer   diffheaderold_pathopenread
apply_diffnew_pathwrite)diffsr   textfnew_texts        2lib/python3.12/site-packages/whatthepatch/apply.pyapply_patchr      s    %$ 	;;;.Ddkk**+  qvvx  dD)$++&&, 	GGH	 		   	 	s   C$CC
	C	c           
         t        d      }|st        dd      t        j                         }t        j
                  j                  |dt        t        | j                              z         }|dz   }|dz   }|dz   }|d	z   }	t        |d
      5 }
|
j                  dj                  |      dz          d d d        t        |	d
      5 }
|
j                  | j                         d d d        ||rdnddd|d|	d||g
}t        j                  |      }t        |      5 }
|
j                         j!                         }d d d        	 t        |      5 }
|
j                         j!                         }d d d        t%        |       t%        |       t%        |       t%        |	       |dk7  rt        d|      |fS # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# t"        $ r d }Y w xY w)Nr   zcannot find patch program)codezwtp-z.oldz.newz.rejz.patchr
   
z	--reversez	--forwardz--quietz-oz-iz-rr   zpatch program failed)r   r   tempfile
gettempdirospathjoinstrhashr   r   r   r   
subprocesscallr   
splitlinesIOErrorr   )r   linesreverse	patchexectempdirfilepatholdfilepathnewfilepathrejfilepathpatchfilepathr   argsretrejliness                 r   _apply_diff_with_subprocessr5      s   gI!"=BGG!!#Gww||GVc$t{{2C.D%DEHV#KV#KV#Kx'M	k3	 )1			% 4'() 
mS	! Q			 	KD //$
C	k	 &a##%&+ 	-!vvx**,H	-
 ;
;
;
= ax!"8sCC(?M) ) "& &	- 	- sN   $F6GGG' G,G' 6G GGG$ G' 'G54G5c                 >    d }| D cg c]
  } ||       c}S c c}w )Nc                 P    | j                  | j                  | j                        S )N)oldnew)_replacer9   r8   )cs    r   _reverse_changez!_reverse.<locals>._reverse_changeV   s    zzaeez//     )changesr<   r;   s      r   _reverser@   U   s"    0 )001OA000s   c           
      8   	 |j                         }|rt        | ||      S t	        |      }|rt        | j                        n| j                  }|D ]`  \  }}}	}
||	||kD  rt        dj                  ||	      |
      ||dz
     |	k7  s=t        dj                  ||	||dz
           |
       d}d}|D ]B  \  }}}	}
||||dz
  |z
  |z   = |dz  }|||j                  |dz
  |	       |dz  }=|@|CD |S # t        $ r t        |      }Y w xY w)Nz3context line {n}, "{line}" does not exist in source)nline)hunkr   z0context line {n}, "{line}" does not match "{sl}")rB   rC   slr   )
r'   AttributeErrorlistr5   lenr@   r?   r   formatinsert)r   r   r*   	use_patchr)   n_linesr?   r8   r9   rC   rD   ris                r   r   r   \   s   ! *4@@%jG(/ht||$T\\G ' S$?t/W}(IPPD Q  	  S1W~%(FMMDU37^ N  	 & 	
A	A ' 
S$?s{cAgkAo&FA[S_LLq$'FA_ 
 LY  T
s   D DD)F)FF)r%   r   os.pathr     r   
exceptionsr   r   snippetsr   r   r   r5   r@   r   r>   r=   r   <module>rS      s.        ? #&3l1/r=   