B \@sddlZddlZddlZddlZddlZddlmZejdrJddZ nej Z ej rhddZ e ZdZnddZ ejZejZd d Zd d Zd dZejdddkrddlZddlZddlZddlZGdddejjZn ddlmZdS)N)sixwinc CsPyt|Wn0tk r>}z|jtjks.Wdd}~XYnXt||dS)N)osremoveOSErrorerrnoENOENTrename)Zcurrent_filenameZ new_filenameer 7/tmp/pip-build-uw_ogi45/s3transfer/s3transfer/compat.py rename_files  r cCst|dS)N)inspectZgetfullargspec)funcr r r accepts_kwargs&srcCst|dS)Nr)rZ getargspec)rr r r r2sc CsTt|dr|St|drPt|drPy|dddSttfk rNdSXdS)zBackwards compat function to determine if a fileobj is seekable :param fileobj: The file-like object to determine if seekable :returns: True, if seekable. False, otherwise. seekableseektellrTF)hasattrrrrIOError)fileobjr r r r9s  rcCst|dr|St|dS)zDetermines whether or not a file-like object is readable. :param fileobj: The file-like object to determine if readable :returns: True, if readable. False otherwise. readableread)rr)rr r r rQs rcCs,ttdrt|d|n ||dS)Nposix_fallocater)rrrfilenotruncate)rsizer r r fallocate^s rr)rc@s$eZdZdddZedddZdS) BaseManagerNr c Cs|jjtjjjkst|dk r0t|ds0tdtj dd\}}tj t |j |j |j|j|j|||fd|_ddd |jjD}t |jd ||j_|j|||_|tjjj|j_tjj|t |j|j|j|j|j|jfd d |_dS) zH Spawn a server process for this manager object N__call__zinitializer must be a callableF)Zduplex)targetargs:css|]}t|VqdS)N)str).0ir r r sz$BaseManager.start..-r)r$Z exitpriority)_statevaluemultiprocessingmanagersZStateZINITIALAssertionErrorr TypeErrorZPipeProcesstype _run_server _registryZ_addressZ_authkeyZ _serializerZ_processjoinZ _identity__name__namestartcloserecvZSTARTEDutilZFinalizeZ_finalize_managerZ_Clientshutdown)self initializerinitargsreaderwriteridentr r r r8ps*       zBaseManager.startc CsP|dk r|||||||}||j|tjd|j|dS)zH Create a server, report its address and run it Nzmanager serving at %r)Z_Serversendaddressr9r-r;info serve_forever) clsregistryrDZauthkey serializerrAr>r?serverr r r r3s zBaseManager._run_server)Nr )Nr )r6 __module__ __qualname__r8 classmethodr3r r r r r!os %r!)r!)rsysrrsocketZbotocore.compatrplatform startswithr r PY3rConnectionErrorZ SOCKET_ERRORMAXINTerrorZmaxintrrr version_infor-Zmultiprocessing.managersZmultiprocessing.connectionZmultiprocessing.utilr.r!r r r r  s2     >