B
    pj`                 @   s    d Z dd Zedkree dS )z>
(c) 2006-2013, Armin Rigo, Holger Krekel, Maciej Fijalkowski
c          	      s  dd l dd l	dd lddlm   \g fdd 	fddg  d} d xD ]\}\}}}  } d	|td
 d  f |d k	r|rt||krtd	|t
|d}|| |  y&|r|| |||f W n tk
r.   Y nX ~q|W  d   }x|dkr|\}	}
}j|
}y| W n tk
r   Y nX |	dkrj|}n|	dkst|	|}||   }qJW  d d S )N    )md5c                sB   |   sty|  W n  tk
r<   | d Y nX d S )NT)
startswithAssertionErrorunlinkOSErrorZrmtree)path)destdirosshutil 3lib/python3.7/site-packages/execnet/rsync_remote.pyremove   s
    zserve_rsync.<locals>.removec                s  y | }W n tk
r&   d }Y nX   }t|tr|rX|jsX|  d }|sf|  |	d}|r
| | i }x2|D ]*}j| |}|||g  d||< qW drx| D ]"}||krΈj| |}	|	 qW n|d k	rt|tstd }
|r|jr|\}}}||jkr@nV||jkrpt| d}|  }
|  n&|r||jkr
| | d S d S n|   d||
ff | |f d S )Nr   Tdeleterbsend)lstatr   receive
isinstancelistS_ISDIRst_moder   makedirspopchmodr   joingetlistdirtupler   S_ISREGst_sizest_mtimeopenreadZdigestcloser   append)r   ZrelcomponentsstmsgmodeZ
entrynamesZ	entrynameZdestpathZ	othernameZ	otherpathZchecksumZmsg_modeZ	msg_mtimeZmsg_sizef)channelr   modifiedfilesoptionsr	   receive_directory_structurer   statr   r   r,      sV    










z0serve_rsync.<locals>.receive_directory_structureF)Z	list_doneNZack   z file modified during rsync: {!r}wb)ZlinksN*   Zlinkbaselink)ZdoneN)r	   r-   r
   Zhashlibr   r   r   lenIOErrorformatr!   writer#   r   utimer   r   r   r   symlink)r)   ZSTRICT_CHECKr   r'   Ztimesizedatar(   r&   Z_typerelpathZ	linkpointsrcr   )
r)   r   r   r*   r+   r	   r,   r   r
   r-   r   serve_rsync   sV    /






r<   Z__channelexec__N)__doc__r<   __name__r)   r   r   r   r   <module>   s   j