a [dgG7@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl mZejdrddlmmmmZn ejejZzeZWneydZYn0eZgdZd-ddZejd.dd Z ejd d Z!ejd d Z"ejddZ#Gddde$Z%GdddZ&ejddZ'ddZ(ejddZ)ejddZ*hdZ+ddZ,dd Z-d!d"Z.Gd#d$d$Z/e0ed%rej1gZ2ngZ2Gd&d'd'e/Z3e4ej5d(d)d*6DZ7Gd+d,d,e Z8dS)/N)DistutilsError) working_setjava)AbstractSandboxDirectorySandboxSandboxViolation run_setupcCs^d}t||}|}Wdn1s,0Y|durB|}t||d}t|||dS)Nrbexec)openreadcompiler )filenameglobalslocalsmodestreamZscriptcoder)r:r1r2rrrresumes zExceptionSaver.resumeN)r4r5r6r;r@rErrrrr8ps r8c#sjtjt}VWdn1s,0YtjfddtjD}t||dS)Nc3s$|]}|vr|ds|VqdS)z encodings.N startswith).0mod_namerrr s zsave_modules..)rmodulescopyr8update_clear_modulesrE) saved_excZ del_modulesrrr save_moduless $  rPcCst|D] }tj|=qdSr)listrrK) module_namesrIrrrrNs rNc cs.t}z|VWt|n t|0dSr) pkg_resources __getstate__ __setstate__rrrrsave_pkg_resources_statesrVc cstj|d}tttttnt|Ft |t ddVWdn1sj0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YdS)NZtemp setuptools) r!rjoinrVrPrhide_setuptoolsrr%r) __import__) setup_dirZtemp_dirrrr setup_contexts  r\>Z distutilsrWZCythonrS_distutils_hackcCs|ddd}|tvS)N.r)split_MODULES_TO_HIDE)rIZ base_modulerrr _needs_hidingsrbcCs6tjdd}|dur|tttj}t|dS)Nr])rrKgetZ remove_shimfilterrbrN)r]rKrrrrYs  rYc Cstjtj|}t|z|gt|tjdd<tjd|t t j ddt |&t|dd}t||Wdn1s0YWn6ty}z|jr|jdrWYd}~n d}~00Wdn1s0YdS)NrcSs|Sr)Zactivate)distrrrzrun_setup..__main__)__file__r4)r!rabspathdirnamer\rQrrinsertr__init__Z callbacksappendrdictr SystemExitargs)Z setup_scriptrqr[nsvrrrrs   ,rc@seZdZdZddZddZddZdd Zd d Zd d Z dD]Z e e e r@e e e e <q@d#ddZervedeZedeZdD]Z e e e ree e e <qddZdD]Z e e e ree e e <qddZdD]Z e e e ree e e <qddZddZdd Zd!d"ZdS)$rFcsfddttD_dS)Ncs$g|]}|dst|r|qS)_)rGhasattr)rHnamer9rr sz,AbstractSandbox.__init__..)dir_os_attrsr9rr9rrm s zAbstractSandbox.__init__cCs"|jD]}tt|t||qdSr)rzsetattrr!getattr)r:sourcervrrr_copys zAbstractSandbox._copycCs(||tr|jt_|jt_d|_dSr<)r~_filebuiltinsfile_openr _activer9rrrr;s  zAbstractSandbox.__enter__cCs$d|_trtt_tt_|tdSNF)rrrrrr r~ry)r:exc_type exc_value tracebackrrrr@s zAbstractSandbox.__exit__cCs.||WdS1s 0YdSrr)r:funcrrrrun"szAbstractSandbox.runcsttfdd}|S)Ncs>|jr&|j||g|Ri|\}}||g|Ri|Sr)r _remap_pair)r:srcdstrqkwrvoriginalrrwrap*s z3AbstractSandbox._mk_dual_path_wrapper..wrapr|ryrvrrrr_mk_dual_path_wrapper's z%AbstractSandbox._mk_dual_path_wrapper)renamelinksymlinkNcs p ttfdd}|S)Ncs6|jr |j|g|Ri|}|g|Ri|Sr)r _remap_inputr:rrqrrrrr8sz5AbstractSandbox._mk_single_path_wrapper..wrapr)rvrrrrr_mk_single_path_wrapper5sz'AbstractSandbox._mk_single_path_wrapperrr )statlistdirr'r chmodchownmkdirremoveunlinkrmdirutimelchownchrootlstatZ startfilemkfifomknodpathconfaccesscsttfdd}|S)NcsT|jr>|j|g|Ri|}||g|Ri|S|g|Ri|Sr)rr _remap_outputrrrrrMsz4AbstractSandbox._mk_single_with_return..wraprrrrr_mk_single_with_returnJs z&AbstractSandbox._mk_single_with_return)readlinktempnamcsttfdd}|S)Ncs$|i|}|jr ||S|Sr)rr)r:rqrZretvalrrrr\s z'AbstractSandbox._mk_query..wraprrrrr _mk_queryYs zAbstractSandbox._mk_query)r&tmpnamcCs|Srr)r:rrrr_validate_pathhszAbstractSandbox._validate_pathcOs ||Srrr: operationrrqrrrrrlszAbstractSandbox._remap_inputcCs ||Srr)r:rrrrrrpszAbstractSandbox._remap_outputcOs<|j|d|g|Ri||j|d|g|Ri|fS)Nz-fromz-to)rr:rrrrqrrrrrtszAbstractSandbox._remap_pair)N)r4r5r6rrmr~r;r@rrrvruryrrrrrrrrrrrrrrrs:          rdevnullc@s~eZdZegdZdgZefddZddZ e r>ddd Z dd d Z d d Z ddZ ddZddZddZdddZdS)r) r rrrrrrrrrrrrz.*lib2to3.*\.pickle$cCsFtjtj||_tj|jd|_dd|D|_t |dS)NcSs g|]}tjtj|qSr)r!rnormcaserealpath)rHrrrrrwsz-DirectorySandbox.__init__..) r!rrr_sandboxrX_prefix _exceptionsrrm)r:Zsandbox exceptionsrrrrms zDirectorySandbox.__init__cOsddlm}||||dS)Nr)r)r.r)r:rrqrrrrr _violations zDirectorySandbox._violationrcOsF|dvr.||s.|jd||g|Ri|t||g|Ri|S)NrZrtr ZrUUr)_okrrr:rrrqrrrrrszDirectorySandbox._filecOsF|dvr.||s.|jd||g|Ri|t||g|Ri|S)Nrr )rrrrrrrrszDirectorySandbox._opencCs|ddS)Nr)rr9rrrrszDirectorySandbox.tmpnamcCsV|j}zBd|_tjtj|}||p@||jkp@||jW||_S||_0dSr) rr!rrr _exemptedrrGr)r:rZactiverrrrrs  zDirectorySandbox._okcs<fdd|jD}fdd|jD}t||}t|S)Nc3s|]}|VqdSrrF)rH exceptionfilepathrrrJsz-DirectorySandbox._exempted..c3s|]}t|VqdSr)rematch)rHpatternrrrrJs)r_exception_patterns itertoolschainany)r:rZ start_matchesZpattern_matchesZ candidatesrrrrs   zDirectorySandbox._exemptedcOs:||jvr6||s6|j|tj|g|Ri||Sr) write_opsrrr!rrrrrrrs"zDirectorySandbox._remap_inputcOs8||r||s0|j|||g|Ri|||fSr)rrrrrrrszDirectorySandbox._remap_paircOsL|t@r0||s0|jd|||g|Ri|tj|||g|Ri|S)Nzos.open) WRITE_FLAGSrrryr )r:rflagsrrqrrrrr szDirectorySandbox.openN)r)r)r)r4r5r6rofromkeysrr _EXCEPTIONSrmrrrrrrrrr rrrrrs     rcCsg|]}tt|dqS)rr)rHarrrrwsrwz4O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARYc@s"eZdZedZddZdS)ra SandboxViolation: {cmd}{args!r} {kwargs} The package setup script has attempted to modify files on your system that are not within the EasyInstall build area, and has been aborted. This package cannot be safely installed by EasyInstall, and may not support alternate installation locations even if you run its setup script by hand. Please inform the package's author and the EasyInstall maintainers to find out if a fix or workaround is available. cCs |j\}}}|jjfitSr)rqtmplformatr)r:cmdrqkwargsrrr__str__s zSandboxViolation.__str__N)r4r5r6textwrapdedentlstriprrrrrrrs r)N)N)9r!rr#operator functoolsrr contextlibr+rrrSZdistutils.errorsrrplatformrGZ$org.python.modules.posix.PosixModuleZpythonrKposixZ PosixModuleryrvrr NameErrorr r__all__rcontextmanagerrrr%r)r-r*r8rPrNrVr\rarbrYrrrurrrreduceor_r`rrrrrrsn                w  V