B ¾yý%ôâÏã@slddlZddlZddlmZmZddlmZiaddd„Zddd „Z dd d „Z d d „Z ddd„Z dd„Z dS)éN)ÚDistutilsFileErrorÚDistutilsInternalError)Úlogéÿéc Csnt|tƒstd|fƒ‚tj |¡}g}tj |¡s<|dkr@|St tj  |¡¡rV|Stj  |¡\}}|g}x4|r |r tj |¡s tj  |¡\}}|  d|¡qnWxÆ|D]¾}tj  ||¡}tj  |¡} t | ¡rÒq¨|dkræt  d|¡|s^yt ||¡WnVtk rR} z6| jtjkr,tj |¡sBtd|| jdfƒ‚Wdd} ~ XYnX| |¡dt| <q¨W|S)Nz(mkpath: 'name' must be a string (got %r)Úrrz creating %szcould not create '%s': %séÿÿÿÿ)Ú isinstanceÚstrrÚosÚpathÚnormpathÚisdirÚ _path_createdÚgetÚabspathÚsplitÚinsertÚjoinrÚinfoÚmkdirÚOSErrorÚerrnoZEEXISTrÚargsÚappend) ÚnameÚmodeÚverboseÚdry_runZ created_dirsÚheadÚtailZtailsÚdZabs_headÚexc©r#ú5/opt/alt/python37/lib/python3.7/distutils/dir_util.pyÚmkpaths>       &  r%c CsVtƒ}x(|D] }| tj |tj |¡¡¡q Wx t|ƒD]}t||||dq:WdS)N)rr)ÚsetÚaddr r rÚdirnameÚsortedr%)Zbase_dirÚfilesrrrZneed_dirÚfileÚdirr#r#r$Ú create_treePs   r-c Csdddlm}|s(tj |¡s(td|ƒ‚yt |¡} Wn>tk rt} z |rRg} ntd|| jfƒ‚Wdd} ~ XYnX|s†t ||dg} xÔ| D]Ì} tj  || ¡} tj  || ¡}|   d¡r¼q|rtj  | ¡rt  | ¡}|dkrðt d||¡|st ||¡|  |¡qtj | ¡r<|  t| |||||||d ¡q|| ||||||d |  |¡qW| S) Nr)Ú copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)rz.nfsrzlinking %s -> %s)rr)Zdistutils.file_utilr.r r rrÚlistdirrÚstrerrorr%rÚ startswithÚislinkÚreadlinkrrÚsymlinkrÚextendÚ copy_tree)ÚsrcÚdstZ preserve_modeZpreserve_timesZpreserve_symlinksÚupdaterrr.ÚnamesÚeZoutputsÚnZsrc_nameZdst_nameZ link_destr#r#r$r6csH  "      r6cCsjxTt |¡D]F}tj ||¡}tj |¡rBtj |¡sBt||ƒq | tj|f¡q W| tj |f¡dS)N) r r/r rrr2Ú_build_cmdtuplerÚremoveÚrmdir)r Ú cmdtuplesÚfZreal_fr#r#r$r=¨s  r=c Cs |dkrt d|¡|rdSg}t||ƒxp|D]h}y2|d|dƒtj |d¡}|tkrdt|=Wq0tk r–}zt d||¡Wdd}~XYq0Xq0WdS)Nrz'removing '%s' (and everything under it)rzerror removing %s: %s) rrr=r r rrrÚwarn)Z directoryrrr@Úcmdrr"r#r#r$Ú remove_tree²s    rDcCs6tj |¡\}}|dd…tjkr2||dd…}|S)Nrr)r r Ú splitdriveÚsep)r Zdriver#r#r$Úensure_relativeÊsrG)rrr)rrr)rrrrrr)rr)r rZdistutils.errorsrrZ distutilsrrr%r-r6r=rDrGr#r#r#r$Ús  ?  D