a :i@svddlZddlZddlZddlZddlmZddZddZddZd d Z d d Z d dZ GdddZ gdZ dS)N)S_IWUSRcCs*|s&tdt|tt|dS)Nzcreate folder %s)existsloggingdebugstrosmakedirs)pathr >/usr/lib/python3.9/site-packages/virtualenv/util/path/_sync.py ensure_dirsr cCs`||krtd||s"dS|rH|sHtd|t|ntd||dS)Nz#source and destination is the same zremove directory %szremove file %s) ValueErrorris_dir is_symlinkrr safe_deleteunlinksrcdestr r r ensure_safe_to_dos   rcCs2t||tdt|||j||ddS)Nz symlink %s)target_is_directory)rrr_Debug symlink_torrr r r symlinks rcCsHt|||}|rtntj}tdt|||t|t|dS)Nzcopy %s) rrcopytreeshutilcopyrrrr)rrrmethodr r r r!s  rc Cszt|D]j\}}}tj|tj||}tj|sBt||D],}tj||}tj||}t||qFq dSN) rwalkr joinrelpathisdirrrr) rrroot_filesZdest_dirnameZsrc_fZdest_fr r r r)s  rcCs<dd}tjdkrdnd|i}tjt|fddi|dS)NcSs*t|tjs$t|t||ndSr)raccessW_OKchmodr)funcr exc_infor r r onerror5s  zsafe_delete..onerror) Zonexcr, ignore_errorsT)sys version_inforrmtreer)rr,kwargsr r r r4src@seZdZddZddZdS)rcCs||_||_dSrr)selfrrr r r __init__Asz_Debug.__init__cCs,|jrdndt|jdt|jS)Nz directory z to )rrrr)r4r r r __str__Esz_Debug.__str__N)__name__ __module__ __qualname__r5r7r r r r r@sr)r rrrrr)rrrr0statrr rrrrrr__all__r r r r s