a q egIã@sŒddlmZddlZddlZddlZddlZddlmZe e ¡Z dd„Z dd„Z dd „Z d d „Zd d „Zdd„ZGdd„dƒZgd¢ZdS)é)Ú annotationsN)ÚS_IWUSRcCs*| ¡s&t dt|ƒ¡t t|ƒ¡dS)Nzcreate folder %s)ÚexistsÚLOGGERÚdebugÚstrÚosÚmakedirs)Úpath©r úD/usr/local/lib/python3.9/site-packages/virtualenv/util/path/_sync.pyÚ ensure_dir sr cCsd||krd|›}t|ƒ‚| ¡s&dS| ¡rL| ¡sLt d|¡t|ƒnt d|¡| ¡dS)Nz#source and destination is the same zremove directory %szremove file %s)Ú ValueErrorrÚis_dirÚ is_symlinkrrÚ safe_deleteÚunlink)ÚsrcÚdestÚmsgr r r Úensure_safe_to_dos    rcCs2t||ƒt dt||ƒ¡|j|| ¡ddS)Nz symlink %s)Útarget_is_directory)rrrÚ_DebugÚ symlink_tor©rrr r r Úsymlink s rcCsHt||ƒ| ¡}|rtntj}t dt||ƒ¡|t|ƒt|ƒƒdS)Nzcopy %s) rrÚcopytreeÚshutilÚcopyrrrr)rrrÚmethodr r r r&s  rc Cszt |¡D]j\}}}tj |tj ||¡¡}tj |¡sBt |¡|D],}tj ||¡}tj ||¡}t ||¡qFq dS©N) rÚwalkr ÚjoinÚrelpathÚisdirr rr) rrÚrootÚ_ÚfilesÚdest_dirÚnameZsrc_fZdest_fr r r r.s  rcCs<dd„}tjdkrdnd|i}tjt|ƒfddi|¤ŽdS)NcSs*t |tj¡s$t |t¡||ƒn‚dSr )rÚaccessÚW_OKÚchmodr)Úfuncr Úexc_infor r r Úonerror:s  zsafe_delete..onerror)éé Úonexcr/Ú ignore_errorsT)ÚsysÚ version_inforÚrmtreer)rr/Úkwargsr r r r9src@s(eZdZddœdd„Zddœdd„ZdS) rÚNone)ÚreturncCs||_||_dSr r)Úselfrrr r r Ú__init__Fsz_Debug.__init__rcCs$|j ¡rdnd›|j›d|j›S)Nz directory Úz to )rrr)r:r r r Ú__str__Jsz_Debug.__str__N)Ú__name__Ú __module__Ú __qualname__r;r=r r r r rEsr)rrr rrr)Ú __future__rÚloggingrrr4ÚstatrÚ getLoggerr>rr rrrrrrÚ__all__r r r r Ús