
    	^c                     H    d dl mZ d dlmZ d Zd Zd Zd Zd Zd Z	d	 Z
d
S )   )_)mdiffc              #     K   i }| j                             t          d          t          |          t          |          z   t          d                    }|D ]]}|                                 t          |                                          }||vr|g||<   B||                             |           ^|D ]r}|                                 |                                }t          |          }|                    |g           D ]"}||                                k    r||fV   n#s|	                                 dS )zfind renamed files that have no changes

    Takes a list of new filectxs and a list of removed filectxs, and yields
    (before, after) tuples of exact matches.
    s   searching for exact renames   files)totalunitN)
uimakeprogressr   len	incrementhashdataappendgetcomplete)	repoaddedremovedhashesprogressfctxhadatarfctxs	            3/usr/lib/python3/dist-packages/mercurial/similar.py_findexactmatchesr      s[      Fw##	
())5zzCLL(x[[ $  H
  # #F??F1II1IT""""   		KKZZ2&& 	 	E

$$dm### %
     c                 V    |                                  }|t          j        |          fS N)r   r   splitnewlines)r   origs     r   _ctxdatar"   4   s%    99;;D$T****r   c                    |\  }}|                                  }d}t          j        ||          }|D ]&\  }}}	}
||	|
         D ]}|t          |          z  }'t          |          t          |          z   }|dz  |z  S )N    g       @)r   r   blocksr   )r   	otherdatar!   linestextequalmatchesx1x2y1y2linelengthss                r   _scorer1   :   s    KD%99;;D El4&&G!  BB"R%L 	 	DSYYEE	 $ii#d))#G3;  r   c                 <    t          | t          |                    S r   )r1   r"   )fctx1fctx2s     r   scorer5   I   s    %%)))r   c              #     K   i }| j                             t          d          t          d          t          |                    }|D ]i}|                                 d}|D ]N}|                    |d|f          d         }	|t          |          }t          ||          }
|
|	k    r||
f||<   Oj|                                 |	                                D ]\  }}|\  }}|||fV  dS )zfind potentially renamed files based on similar file content

    Takes a list of new filectxs and a list of removed filectxs, and yields
    (before, after, score) tuples of partial matches.
    s   searching for similar filesr   )r   r   Nr   )
r	   r
   r   r   r   r   r"   r1   r   items)r   r   r   	thresholdcopiesr   rr   a	bestscoremyscoredestvsourcebscores                  r   _findsimilarmatchesrB   M   s,      Fw##	
())(3w<< $  H  	) 	) 	) 	)A

1tY&788;I|{{QooG""Lq		) <<>> # #adF"""""# #r   c                     d | D             S )Nc                 B    g | ]}|                                 d k    |S )r$   )size).0xs     r   
<listcomp>z_dropempty.<locals>.<listcomp>i   s%    ---!1Ar    )fctxss    r   
_dropemptyrK   h   s    --u----r   c              #   f  	
K   | d                                          
t          fdt          |          D                       }t          
fdt          |          D                       }t                      	t	          | ||          D ]E\  }}	                    |           |                                |                                dfV  F|dk     rR	fd|D             }t          | |||          D ]3\  }}}|                                |                                |fV  2dS dS )z:find renamed files -- yields (before, after, score) tuplesNc              3   (   K   | ]}|         V  d S r   rI   )rF   fpwctxs     r   	<genexpr>zfindrenames.<locals>.<genexpr>t   s'      ==DH======r   c              3   0   K   | ]}|v |         V  d S r   rI   )rF   rN   pctxs     r   rP   zfindrenames.<locals>.<genexpr>u   s+      OO2B$JJd2hJJJJOOr   g      ?c                     g | ]}|v|	S rI   rI   )rF   rG   matchedfiless     r   rH   zfindrenames.<locals>.<listcomp>   s#    EEEAq/D/Da/D/D/Dr   )p1rK   sortedsetr   addpathrB   )r   r   r   r8   
addedfilesremovedfilesr;   br5   rT   rR   rO   s            @@@r   findrenamesr]   l   sZ     :D7799D
 ====ve}}=====JOOOOOOOOOL 55L#D*lCC ( (Avvxx3''''' 3EEEEEEE
0*lI
 
 	. 	.MQ5 6688QVVXXu----- 	. 	.r   N)i18nr    r   r   r"   r1   r5   rB   rK   r]   rI   r   r   <module>r`      s              
" " "J+ + +! ! !* * *# # #6. . .. . . . .r   