
    rc                     f    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dS )    N   )patch)SubprocessExceptionHunkApplyException)whichremovec                    	 t          | t          j                  r| g} | D ]}|j        j        dk    rg }nEt          |j        j                  5 }|                                }ddd           n# 1 swxY w Y   t          ||          }t          |j        j        d          5 }|	                    |           ddd           n# 1 swxY w Y   dS )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.11/site-packages/whatthepatch/apply.pyapply_patchr      sO   %$$  	 	;;. 	 DDdk*++  qvvxx                              dD))$+&,, 	GGH	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	s$   A00A4	7A4	%CC	C	Fc           
         t          d          }|st          dd          t          j                    }t          j                            |dt          t          | j	                            z             }|dz   }|dz   }|dz   }|d	z   }	t          |d
          5 }
|
                    d                    |          dz              d d d            n# 1 swxY w Y   t          |	d
          5 }
|
                    | j                   d d d            n# 1 swxY w Y   ||rdnddd|d|	d||g
}t          j        |          }t          |          5 }
|
                                                                }d d d            n# 1 swxY w Y   	 t          |          5 }
|
                                                                }d d d            n# 1 swxY w Y   n# t"          $ r d }Y nw xY wt%          |           t%          |           t%          |           t%          |	           |dk    rt          d|          ||fS )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      sM   gI H!"=BGGGG!##Gw||GVc$t{2C2C.D.D%DEEHV#KV#KV#Kx'M	k3		 )1			%  4'((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
mS	!	! Q		               	/KD /$

C	k		 &a##%%& & & & & & & & & & & & & & &+ 	-!vvxx**,,H	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-    ;
;
;
= ax D!"8sCCCC(?sl   ,CCC/DDD'FFFG! "'G	G! GG! GG! !G0/G0c                 &    d fd| D             S )Nc                 D    |                      | j        | j                  S )N)oldnew)_replacer9   r8   )cs    r   _reverse_changez!_reverse.<locals>._reverse_changeV   s    zzaez///    c                 &    g | ]} |          S  r?   ).0r;   r<   s     r   
<listcomp>z_reverse.<locals>.<listcomp>Y   s#    0001OOA000r=   r?   )changesr<   s    @r   _reverserC   U   s.    0 0 0 10000000r=   c           
      x   	 |                                 }n# t          $ r t          |          }Y nw xY w|rt          | ||          S t	          |          }|rt          | j                  n| j        }|D ]v\  }}}	}
|m|	k||k    r&t          d                    ||	          |
          ||dz
           |	k    r0t          d                    ||	||dz
                     |
          wd}d}|D ]E\  }}}	}
||||dz
  |z
  |z   = |dz  }|!||	                    |dz
  |	           |dz  }@||	 F|S )Nz3context line {n}, "{line}" does not exist in source)nline)hunkr   z0context line {n}, "{line}" does not match "{sl}")rE   rF   slr   )
r'   AttributeErrorlistr5   lenrC   rB   r   formatinsert)r   r   r*   	use_patchr)   n_linesrB   r8   r9   rF   rG   ris                r   r   r   \   s   !!   T

  A*4@@@%jjG(/Aht|$$$T\G '  S$ 	t 	W} (IPPD Q   	    S1W~% (FMMDU37^ N   	    	
A	A ' 
 
S$ 		s 		cAgkAo&FAA 	S 	LLq$'''FAA 	 	 Ls    33)F)FF)r%   r   os.pathr     r   
exceptionsr   r   snippetsr   r   r   r5   rC   r   r?   r=   r   <module>rV      s                ? ? ? ? ? ? ? ? # # # # # # # #  &3 3 3 3l1 1 1/ / / / / /r=   