K i*dZddlZddlZddlmZmZddlmZddlm Z  ddlm Z ed Z d Zdede fdeded e fdZdefdZdZdZy#e $r de d e d dfd Z Y:wxYw)z2Convenience layer on top of stdlib's shutil and osN)CallableTypeVar)py311)log)chmodargskwargsreturncyN)r r s X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/setuptools/_shutil.pyrrs _Tctjd|| t||y#t$r }tjd|Yd}~yd}~wwxYw)Nzchanging mode of %s to %ozchmod failed: %s)rdebugrOSError)pathmodees rattempt_chmod_verbosersDII)46) dD ) $a(()s & AA  Afunc.argexcc|tjtjfvr5tjdk(r"t |t j ||S|)zIshutils onexc callback to automatically call chmod for certain functions.nt)osunlinkremovenamerstatS_IWRITE)rrrs r _auto_chmodr$ s@   299%%"''T/c4==1Cy IrFc0tj|||S)zx Similar to ``shutil.rmtree`` but automatically executes ``chmod`` for well know Windows failure scenarios. )r shutil_rmtree)r ignore_errorsonexcs rrmtreer)+s   t]E ::rc \tjj|r t|fi|yyr )rrisdirr))roptss rrmdirr-3s$ ww}}TttrcZtjd}tj||S)N)rumask)tmps r current_umaskr28s ((5/CHHSM Jr)__doc__rr"typingrrcompatr distutilsrr ImportErrorobjectrrstr BaseExceptionr$r)r-r2rrrr;s8 $  T]) 37 "%,9 %K; U  V v $  sAA! A!