a 9êdgbã@slddlZddlZddlmZmZddlmZiaddd„Zddd „Z dd d „Z d d „Z ddd„Z dd„Z dS)éN)ÚDistutilsFileErrorÚDistutilsInternalError)Úlogéÿéc Csht|tƒstd|fƒ‚tj |¡}g}tj |¡s<|dkr@|St tj  |¡¡rV|Stj  |¡\}}|g}|rž|ržtj |¡sžtj  |¡\}}|  d|¡ql|D]À}tj  ||¡}tj  |¡} t | ¡rÌq¢|dkràt  d|¡|sZzt ||¡WnXtyN} z>| jtjkr$tj |¡s:td|| jdfƒ‚WYd} ~ n d} ~ 00| |¡dt| <q¢|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ÚerrnoÚEEXISTrÚargsÚappend) ÚnameÚmodeÚverboseÚdry_runZ created_dirsÚheadÚtailZtailsÚdZabs_headÚexc©r$ú./usr/local/lib/python3.9/distutils/dir_util.pyÚmkpathsB ÿ    ÿ  r&c CsNtƒ}|D] }| tj |tj |¡¡¡q t|ƒD]}t||||dq4dS)N©rr)ÚsetÚaddr r rÚdirnameÚsortedr&)Úbase_dirÚfilesrrrZneed_dirÚfileÚdirr$r$r%Ú create_treePs  r0c Csbddlm}|s(tj |¡s(td|ƒ‚zt |¡} Wn@tyv} z(|rPg} ntd|| jfƒ‚WYd} ~ n d} ~ 00|sˆt ||dg} | D]Ì} tj  || ¡} tj  || ¡}|   d¡r¼q|rtj  | ¡rt  | ¡}|dkrðt d||¡|st ||¡|  |¡qtj | ¡r<|  t| |||||||d ¡q|| ||||||d |  |¡q| S) Nr)Ú copy_filez&cannot copy tree '%s': not a directoryzerror listing files in '%s': %s)rz.nfsrzlinking %s -> %sr')Zdistutils.file_utilr1r r rrÚlistdirrÚstrerrorr&rÚ startswithÚislinkÚreadlinkrrÚsymlinkrÚextendÚ copy_tree)ÚsrcÚdstZ preserve_modeZpreserve_timesZpreserve_symlinksÚupdaterrr1ÚnamesÚeZoutputsÚnZsrc_nameZdst_nameZ link_destr$r$r%r9csR ÿ ÿ     þÿþ r9cCsft |¡D]F}tj ||¡}tj |¡r@tj |¡s@t||ƒq | tj|f¡q | tj |f¡dS)N) r r2r rrr5Ú_build_cmdtuplerÚremoveÚrmdir)r Ú cmdtuplesÚfZreal_fr$r$r%r@¨s  r@c Csž|dkrt d|¡|rdSg}t||ƒ|D]j}z2|d|dƒtj |d¡}|tvrbt|=Wq.ty–}zt d||¡WYd}~q.d}~00q.dS)Nrz'removing '%s' (and everything under it)rzerror removing %s: %s) rrr@r r rrrÚwarn)Z directoryrrrCÚcmdrr#r$r$r%Ú remove_tree²s   rGcCs6tj |¡\}}|dd…tjkr2||dd…}|S)Nrr)r r Ú splitdriveÚsep)r Údriver$r$r%Úensure_relativeÊsrK)rrr)rrr)rrrrrr)rr)r rZdistutils.errorsrrZ distutilsrrr&r0r9r@rGrKr$r$r$r%Ús  ? ÿ E