ž {yMa%c@sddddgZddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl m Z mZejd kpΖeed ƒoΖeed ƒsΨed ƒ‚nejd kred g7ZddlZdd„Zdd„ZGdd„deƒZGdd„deƒZdd„Zdd„Zdd„Zdd„Zdd „Zdd„ZnmejdkZdd„Zdd„ZGd d!„d!eƒZd"d„Zd#d„Zd$d„Zd%d„ZGd&d'„d'eƒZ e ƒZ!dS((u reduce_socketureduce_connectionu send_handleu recv_handleiN(ucurrent_process(uregister_after_forkudebugu sub_debug(u is_exitingu sub_warninguwin32uCMSG_LENu SCM_RIGHTSu%pickling of connections not supportedureduce_pipe_connectioncCs&t|tj|ƒ}|j|ƒdS(N(u DupHandleu_winapiuDUPLICATE_SAME_ACCESSusend(uconnuhandleudestination_pidudh((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu send_handle*scCs|jƒjƒS(N(urecvudetach(uconn((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu recv_handle.scBs/|EeZdZddd„Zdd„ZdS(u DupHandlec Cs…|dkrtjƒ}ntjtjd|ƒ}z+tjtjƒ|||ddƒ|_ Wdtj |ƒX||_ ||_ dS(NiF( uNoneuosugetpidu_winapiu OpenProcessuPROCESS_DUP_HANDLEuFalseuDuplicateHandleuGetCurrentProcessu_handleu CloseHandleu_accessu_pid(uselfuhandleuaccessupiduproc((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu__init__2s   uDupHandle.__init__c Cs{|jtjƒkr|jStjtjd|jƒ}z/tj||jtj ƒ|j dtj ƒSWdtj |ƒXdS(NF( u_piduosugetpidu_handleu_winapiu OpenProcessuPROCESS_DUP_HANDLEuFalseuDuplicateHandleuGetCurrentProcessu_accessuDUPLICATE_CLOSE_SOURCEu CloseHandle(uselfuproc((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyudetach@s uDupHandle.detachN(u__name__u __module__u __qualname__uNoneu__init__udetach(u __locals__((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu DupHandle1su DupHandlecBs,|EeZdZdd„Zdd„ZdS(u DupSocketcs:|jƒ‰‡fdd†}tj|ˆjƒ|_dS(Ncs ˆj|ƒ}|j|ƒdS(N(ushareu send_bytes(uconnupidushare(unew_sock(u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyusendPsu DupSocket.__init__..send(udupuresource_shareruregisterucloseu_id(uselfusockusend((unew_socku>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu__init__Ns uDupSocket.__init__c CsAtj|jƒ}z|jƒ}tj|ƒSWd|jƒXdS(N(uresource_shareruget_connectionu_idu recv_bytesusocketu fromshareuclose(uselfuconnushare((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyudetachUs  uDupSocket.detachN(u__name__u __module__u __qualname__u__init__udetach(u __locals__((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu DupSocketMs u DupSocketcCstt|ƒffS(N(urebuild_socketu DupSocket(us((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu reduce_socket]scCs |jƒS(N(udetach(uds((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyurebuild_socket`surebuild_socketc CsY|jƒ}tj|tjtjƒ,}t|ƒ}t||j|jffSWdQXdS(N( ufilenousocketufromfduAF_INETu SOCK_STREAMu DupSocketurebuild_connectionureadableuwritable(uconnuhandleusuds((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyureduce_connectioncs  cCs2ddlm}|jƒ}||jƒ||ƒS(Ni(u Connection(u connectionu Connectionudetach(udsureadableuwritableu Connectionusock((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyurebuild_connectionis urebuild_connectioncCs\|jrtjnd|jr'tjndB}t|jƒ|ƒ}t||j|jffS(Ni(ureadableu_winapiuFILE_GENERIC_READuwritableuFILE_GENERIC_WRITEu DupHandleufilenourebuild_pipe_connection(uconnuaccessudh((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyureduce_pipe_connectionnscCs,ddlm}|jƒ}||||ƒS(Ni(uPipeConnection(u connectionuPipeConnectionudetach(udhureadableuwritableuPipeConnectionuhandle((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyurebuild_pipe_connectionts urebuild_pipe_connectionudarwincCs†tj|jƒtjtjƒ8}|jdgtjtjtj d|ƒfgƒWdQXt r‚|j ƒdkr‚t dƒ‚ndS(Nsxu@isACKu%did not receive acknowledgement of fd( usocketufromfdufilenouAF_UNIXu SOCK_STREAMusendmsgu SOL_SOCKETu SCM_RIGHTSustructupacku ACKNOWLEDGEu recv_bytesu RuntimeError(uconnuhandleudestination_pidus((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu send_handles $c Csϊtjdƒ}tj|jƒtjtjƒΔ}|jdtj|ƒƒ\}}}}yit rs|j dƒn|d\}}} |tj krΒ|tj krΒtj d| d|…ƒdSWntttjfk rγYnXtdƒ‚WdQXdS(Nu@iisACKiuInvalid data received(ustructucalcsizeusocketufromfdufilenouAF_UNIXu SOCK_STREAMurecvmsguCMSG_LENu ACKNOWLEDGEu send_bytesu SOL_SOCKETu SCM_RIGHTSuunpacku ValueErroru IndexErroruerroru RuntimeError( uconnusizeusumsguancdatauflagsuaddru cmsg_levelu cmsg_typeu cmsg_data((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu recv_handle†s$'"cBs,|EeZdZdd„Zdd„ZdS(uDupFdcsLtj|ƒ‰‡fdd†}‡fdd†}tj||ƒ|_dS(Ncst|ˆ|ƒdS(N(u send_handle(uconnupid(unew_fd(u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyusend˜suDupFd.__init__..sendcstjˆƒdS(N(uosuclose((unew_fd(u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyuclosešsuDupFd.__init__..close(uosudupuresource_shareruregisteru_id(uselfufdusenduclose((unew_fdu>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu__init__–suDupFd.__init__c Cs2tj|jƒ}zt|ƒSWd|jƒXdS(N(uresource_shareruget_connectionu_idu recv_handleuclose(uselfuconn((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyudetachžsu DupFd.detachN(u__name__u __module__u __qualname__u__init__udetach(u __locals__((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyuDupFd•s uDupFdcCs1t|jƒƒ}t||j|j|jffS(N(uDupFdufilenourebuild_socketufamilyutypeuproto(usudf((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu reduce_socket₯scCs5|jƒ}tj||||ƒ}tj|ƒ|S(N(udetachusocketufromfduosuclose(udfufamilyutypeuprotoufdus((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyurebuild_socket©s  cCs+t|jƒƒ}t||j|jffS(N(uDupFdufilenourebuild_connectionureadableuwritable(uconnudf((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyureduce_connection―scCs,ddlm}|jƒ}||||ƒS(Ni(u Connection(u connectionu Connectionudetach(udfureadableuwritableu Connectionufd((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyurebuild_connection³s cBsq|EeZdZdd„Zdd„Zedd„ƒZddd„Zd d „Z d d „Z d d„Z dS(uResourceSharercCsYd|_i|_g|_tjƒ|_d|_d|_d|_ t |t j ƒdS(Ni( u_keyu_cacheu _old_locksu threadinguLocku_lockuNoneu _listeneru_addressu_threaduregister_after_forkuResourceShareru _afterfork(uself((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu__init__½s      uResourceSharer.__init__c Cse|jV|jdkr&|jƒn|jd7_||f|j|j<|j|jfSWdQXdS(Ni(u_locku_addressuNoneu_startu_keyu_cache(uselfusenduclose((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyuregisterΗs   uResourceSharer.registercCsQddlm}|\}}||dtƒjƒ}|j|tjƒfƒ|S(Ni(uClientuauthkey(u connectionuClientucurrent_processuauthkeyusenduosugetpid(uidentuClientuaddressukeyuc((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyuget_connectionΟs  uResourceSharer.get_connectionc Csφddlm}|jΧ|jdk rμ||jdtƒjƒ}|jdƒ|jƒ|j j |ƒ|j j ƒr‡t dƒn|j jƒd|_ d|_d|_ x*|jjƒD]\}\}}|ƒqΏW|jjƒnWdQXdS(Ni(uClientuauthkeyu-ResourceSharer thread did not stop when asked(u connectionuClientu_locku_addressuNoneucurrent_processuauthkeyusenducloseu_threadujoinuis_aliveusub_warnu _listeneru_cacheuitemsuclear(uselfutimeoutuClientucukeyusenduclose((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyustopΧs         " uResourceSharer.stopcCsšx*|jjƒD]\}\}}|ƒqW|jjƒ|jj|jƒtjƒ|_|jdk r{|jj ƒnd|_d|_ d|_ dS(N( u_cacheuitemsuclearu _old_locksuappendu_locku threadinguLocku _listeneruNoneucloseu_addressu_thread(uselfukeyusenduclose((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu _afterforkιs"    uResourceSharer._afterforkcCsvddlm}tdƒ|dtƒjƒ|_|jj|_tj d|j ƒ}d|_ |j ƒ||_dS(Ni(uListeneru0starting listener and thread for sending handlesuauthkeyutargetT(u connectionuListenerudebugucurrent_processuauthkeyu _listeneruaddressu_addressu threadinguThreadu_serveuTrueudaemonustartu_thread(uselfuListenerut((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu_startχs   uResourceSharer._startc Csχttdƒr1tjtjtdtjƒƒnxΏyq|jjƒ}|jƒ}|dkrbPn|\}}|j j |ƒ\}}|||ƒ|ƒ|j ƒWq4t ƒsλddl}tdddd|jƒddƒnYq4Xq4dS(Nupthread_sigmaskiiu.thread for sharing handles raised exception : u-iOu (uhasattrusignalupthread_sigmasku SIG_BLOCKurangeuNSIGu _listeneruaccepturecvuNoneu_cacheupopucloseu is_exitingu tracebacku sub_warningu format_exc(uselfuconnumsgukeyudestination_pidusenducloseu traceback((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu_serves$"      uResourceSharer._serveN( u__name__u __module__u __qualname__u__init__uregisteru staticmethoduget_connectionuNoneustopu _afterforku_startu_serve(u __locals__((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyuResourceSharerΌs   uResourceSharer("u__all__uosusysusocketu threadingustructusignalumultiprocessingucurrent_processumultiprocessing.utiluregister_after_forkudebugu sub_debugu is_exitingu sub_warninguplatformuhasattru ImportErroru_winapiu send_handleu recv_handleuobjectu DupHandleu DupSocketu reduce_socketurebuild_socketureduce_connectionurebuild_connectionureduce_pipe_connectionurebuild_pipe_connectionu ACKNOWLEDGEuDupFduResourceShareruresource_sharer(((u>/opt/alt/python33/lib64/python3.3/multiprocessing/reduction.pyu sF                      \