o ?Og{@sgdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z m Z ddlmZejZzddlZddlmZmZmZmZWneybejdkr^dZYnwd Zd ZeZd Zd gZeed r|d Zed g7Zejdkrd Zed g7ZefddZ ddZ!ddZ"ddZ#ddZ$GdddZ%erGddde%Z&Gddde%Z'Gddde(Z)dPd d!Z*ejdkrdQd#d$Z+ndQd%d$Z+Gd&d'd'e(Z,d(d)Z-ejdkrGd*d+d+e(Z.d,d-Z/d.Z0d/Z1d0Z2d1Z3d2d3Z4d4d5Z5Gd6d7d7e(Z6d8d9Z7d:d;Z8Gdd?Z:ejdkr3d@dAZ;ejdRdBdCZ?nddl@Z@ee@dDrAe@jAZBne@jCZBdRdEdCZ?ejdkrmdFdGZDdHdIZEeFe'eDdJdKZGdLdMZHeFe&eGdSdNdGZDdOdIZEeFe'eDdS)S)ClientListenerPipewaitN)util)AuthenticationErrorBufferTooShort) reduction) WAIT_OBJECT_0WAIT_ABANDONED_0 WAIT_TIMEOUTINFINITEwin32i g4@AF_INETAF_UNIXAF_PIPEcCs t|SNtime monotonic)timeoutrA/opt/alt/python310/lib64/python3.10/multiprocessing/connection.py _init_timeout; rcCs t|kSrr)trrr_check_timeout>rrcCsV |dkrdS|dkrtjdtdS|dkr'tjdtttfddStd ) Nr)Z localhostrrz listener-)prefixdirrz\\.\pipe\pyc-%d-%d-zunrecognized family) tempfileZmktemprZ get_temp_dirosgetpidnext _mmap_counter ValueErrorfamilyrrrarbitrary_addressEsr)cCsT tjdkr|dkrtd|tjdkr$|dkr&tt|s(td|dSdSdS)NrrzFamily %s is not recognized.r)sysplatformr&hasattrsocketr'rrr_validate_familySs   r.cCsR t|tkr dSt|tur|drdSt|tus!t|r#dStd|)Nrz\\rrzaddress type of %r unrecognized)typetuplestr startswithris_abstract_socket_namespacer&)addressrrr address_type_s  r5c@seZdZdZd+ddZddZddZd d Zd d Zd dZ e ddZ e ddZ e ddZ ddZddZd,ddZddZd-ddZd.d d!Zd"d#Zd/d%d&Zd'd(Zd)d*ZdS)0_ConnectionBaseNTcCs>|}|dkr td|s|std||_||_||_dS)Nrzinvalid handlez6at least one of `readable` and `writable` must be True) __index__r&_handle _readable _writable)selfhandlereadablewritablerrr__init__us z_ConnectionBase.__init__cCs|jdur |dSdSrr8_closer;rrr__del__s  z_ConnectionBase.__del__cCs|jdur tddS)Nzhandle is closed)r8OSErrorrBrrr _check_closeds z_ConnectionBase._check_closedcC|jstddS)Nzconnection is write-only)r9rDrBrrr_check_readablez_ConnectionBase._check_readablecCrF)Nzconnection is read-only)r:rDrBrrr_check_writablerHz_ConnectionBase._check_writablecCs$|jr d|_td|td)NFzbad message length)r:r9closerDrBrrr_bad_message_lengths z#_ConnectionBase._bad_message_lengthcCs |jduSrr8rBrrrcloseds z_ConnectionBase.closedcC |jSr)r9rBrrrr=z_ConnectionBase.readablecCrNr)r:rBrrrr>rOz_ConnectionBase.writablecCs ||jSr)rEr8rBrrrfilenosz_ConnectionBase.filenocCs. |jdurz |Wd|_dSd|_wdSrr@rBrrrrJs   z_ConnectionBase.closercCs ||t|}|jdkrtt|}t|}|dkr$td||kr,td|dur5||}n|dkr=td|||krGtd|||||dS)Nrrzoffset is negativezbuffer length < offsetzsize is negativezbuffer length < offset + size)rErI memoryviewitemsizebyteslenr& _send_bytes)r;bufoffsetsizemnrrr send_bytess$    z_ConnectionBase.send_bytescCs& |||t|dSr)rErIrU_ForkingPicklerdumpsr;objrrrsendsz_ConnectionBase.sendcCsL |||dur|dkrtd||}|dur"||S)Nrznegative maxlength)rErGr& _recv_bytesrKgetvalue)r;Z maxlengthrVrrr recv_bytess z_ConnectionBase.recv_bytescCs ||t|K}|j}|t|}|dkrtd||kr'td|}|}|||kr;t| | d| |||||||WdS1s[wYdS)Nrznegative offsetzoffset too large) rErGrQrRrTr&ratellr rbseekreadinto)r;rVrWrYrRZbytesizeresultrXrrrrecv_bytes_intos(       $z_ConnectionBase.recv_bytes_intocCs( |||}t|Sr)rErGrar\loads getbuffer)r;rVrrrrecvs z_ConnectionBase.recvcCs ||||Sr)rErG_pollr;rrrrpolls z_ConnectionBase.pollcC|SrrrBrrr __enter__z_ConnectionBase.__enter__cC |dSrrJr;exc_type exc_valueZexc_tbrrr__exit__rz_ConnectionBase.__exit__)TT)rNr)r)rl)__name__ __module__ __qualname__r8r?rCrErGrIrKpropertyrMr=r>rPrJr[r`rcrhrkrorqrxrrrrr6rs0          r6c@sBeZdZ dZejfddZddZd ddZd d Z d d Z dS)PipeConnectionFcC||jdSrrL)r;Z _CloseHandlerrrrAzPipeConnection._closec Csntj|j|dd\}}z#z|tjkrt|jgdt}Wn|W|d\}}dS|d\}}w)NT overlappedF) _winapiZ WriteFiler8ERROR_IO_PENDINGWaitForMultipleObjectseventrcancelGetOverlappedResult)r;rVoverrwaitresZnwrittenrrrrUs  "zPipeConnection._send_bytesNc Cs\|jr d|_tS|durdnt|d}ztj|j|dd\}}z@z|tjkr1t|j gdt }Wn| W| d\}}|dkrUt}| ||WS|tjkra|||WSn2| d\}}|dkrt}| ||YWS|tjkr|||YWSwWtdty}z |jtjkrtd}~ww)NFTrrz.shouldn't get here; expected KeyboardInterrupt)_got_empty_messageioBytesIOminrReadFiler8rrrrrrwriterjZERROR_MORE_DATA_get_more_datarDwinerrorERROR_BROKEN_PIPEEOFError RuntimeError) r;maxsizeZbsizerrrZnreadferrrra&sR       zPipeConnection._recv_bytescCs.|js t|jddkrdStt|g|S)NrT)rr PeekNamedPiper8boolrrnrrrrmFszPipeConnection._pollcCs|}t}||t|jd}|dur%t|||kr%|tj |j|dd\}}| d\}}|||S)NrTr) rjrrrrrr8rTrKrr)r;rrrVrleftrZrbytesrrrrLs zPipeConnection._get_more_datar) ryrzr{rr CloseHandlerArUrarmrrrrrr} s  r}c@szeZdZ erejfddZejZej Z n e j fddZe j Ze jZ efddZe fddZdd Zdd d Zd dZd S) ConnectioncCr~rrLr;rArrrrAcrzConnection._closecCr~rrLrrrrrAhrcCs8t|} ||j|}||8}|dkrdS||d}q)NTr)rTr8)r;rVr remainingrZrrr_sendms  zConnection._sendcCsft}|j}|}|dkr1|||}t|}|dkr$||kr ttd||||8}|dks |S)Nrzgot end of file during message)rrr8rTrrDr)r;rXreadrVr<rchunkrZrrr_recvvs   zConnection._recvcCst|}|dkr%tdd}td|}||||||dStd|}|dkr;||||dS|||dS)Ni!i!Qi@)rTstructZpackr)r;rVrZZ pre_headerheaderrrrrUs      zConnection._send_bytesNcCs^|d}td|\}|dkr |d}td|\}|dur*||kr*dS||S)Nrrr)rrZunpackrb)r;rrVrXrrrras   zConnection._recv_bytescCst|g|}t|Sr)rr)r;rrrrrrms zConnection._pollr)ryrzr{r_multiprocessingZ closesocketrAr`Z_writerkZ_readr"rJrrrrrUrarmrrrrr\s    rc@sPeZdZ dddZddZddZed d Zed d Zd dZ ddZ dS)rNrcCsp|p |rt|p t}|pt|}t||dkrt|||_nt||||_|dur3t|ts3t d||_ dSNrzauthkey should be a byte string) r5default_familyr)r. PipeListener _listenerSocketListener isinstancerS TypeError_authkey)r;r4r(backlogauthkeyrrrr?s  zListener.__init__cCs@ |jdur td|j}|jrt||jt||j|S)Nzlistener is closed)rrDacceptrdeliver_challengeanswer_challenge)r;crrrrs    zListener.acceptcCs& |j}|durd|_|dSdSr)rrJ)r;ZlistenerrrrrJs  zListener.closecC|jjSr)r_addressrBrrrr4zListener.addresscCrr)r_last_acceptedrBrrr last_acceptedrzListener.last_acceptedcCrprrrBrrrrqrrzListener.__enter__cCrsrrtrurrrrxrzListener.__exit__)NNrN) ryrzr{r?rrJr|r4rrqrxrrrrrs    rcCsj |pt|}t||dkrt|}nt|}|dur%t|ts%td|dur3t||t|||Sr) r5r. PipeClient SocketClientrrSrrr)r4r(rrrrrrs    rTcCsr |r#t\}}|d|dt|}t|}||fSt\}}t|dd}t|dd}||fS)NTFr>r=)r-Z socketpair setblockingrdetachr"pipe)duplexs1s2c1c2Zfd1Zfd2rrrrs       rc Cs td}|rtj}tjtjB}tt}}n tj}tj}dt}}t||tjBtj Btj tj Btj Bd||tj tj}t||dtjtjtjtj}t|tj ddtj|dd}|d\} } t||d} t||d} | | fS)NrrrTrrr)r)rPIPE_ACCESS_DUPLEX GENERIC_READ GENERIC_WRITEBUFSIZEZPIPE_ACCESS_INBOUNDCreateNamedPipeFILE_FLAG_OVERLAPPEDFILE_FLAG_FIRST_PIPE_INSTANCEPIPE_TYPE_MESSAGEPIPE_READMODE_MESSAGE PIPE_WAITNMPWAIT_WAIT_FOREVERNULL CreateFile OPEN_EXISTINGSetNamedPipeHandleStateConnectNamedPiperr}) rr4ZopenmodeaccessZobsizeZibsizeZh1Zh2r_rrrrrrrs>          c@s(eZdZ d ddZddZddZdS) rrcCsttt||_z)tjdkr|jtjtjd|jd|j ||j ||j |_ Wn t y?|jw||_d|_|dkr]t|s]tj|tj|fdd|_dSd|_dS)NposixrTrrargsZ exitpriority)r-getattr_socketr"nameZ setsockoptZ SOL_SOCKETZ SO_REUSEADDRrZbindZlistenZ getsocknamerrDrJZ_familyrrr3Finalizeunlink_unlink)r;r4r(rrrrr?Gs*         zSocketListener.__init__cCs&|j\}|_|dt|SNT)rrrrrrr;srrrr`s  zSocketListener.acceptcCsNz|jW|j}|durd|_|dSdS|j}|dur&d|_|wwr)rrJr)r;rrrrrJes  zSocketListener.closeN)r)ryrzr{r?rrJrrrrrCs   rcCs^ t|}ttt|}|d||t|WdS1s(wYdSr)r5r-rrZconnectrr)r4r(rrrrros   $rc@s6eZdZ d ddZd ddZddZed d ZdS) rNcCsL||_|jddg|_d|_td|jtj|tj|j|jfdd|_ dS)NT)firstz listener created with address=%rrr) r _new_handle _handle_queuerr sub_debugrr_finalize_pipe_listenerrJ)r;r4rrrrr?s  zPipeListener.__init__Fc CsHtjtjB}|r |tjO}t|j|tjtjBtjBtj t t tj tj Sr) rrrrrrrrrZPIPE_UNLIMITED_INSTANCESrrr)r;rflagsrrrrs   zPipeListener._new_handlec Cs|j||jd}z tj|dd}Wnty3}z|jtjkr&WYd}~t|Sd}~wwz%z t |j gdt }Wn | t |W|d\}}t|S|d\}}w)NrTrF)rappendrpoprrrDrZ ERROR_NO_DATArrrrrrr})r;r<rrresrrrrrrs0     zPipeListener.acceptcCs$td||D]}t|qdS)Nz closing listener with address=%r)rrrr)queuer4r<rrrrs  z$PipeListener._finalize_pipe_listenerr)F)ryrzr{r?rr staticmethodrrrrrrs   rc Cs t} zt|dt|tjtjBdtjtjtjtj}Wn t y@}z|j tj tj fvs5t |r6WYd}~nd}~wwnqt|tjddt|S)Nrr)rrZ WaitNamedPiperrrrrrrDrZERROR_SEM_TIMEOUTZERROR_PIPE_BUSYrrrr})r4rhrrrrrs4     rs #CHALLENGE#s #WELCOME#s #FAILURE#cCsddl}t|tstdt|tt}| t || ||d }| d}||kr7| tdS| ttd)Nr Authkey must be bytes, not {0!s}md5zdigest received was wrong)hmacrrSr&formatr/r"urandomMESSAGE_LENGTHr[ CHALLENGEnewdigestrcWELCOMEFAILURErZ connectionrrmessagerZresponserrrrs     rcCsxddl}t|tstdt||d}|ttd}| ||d }| ||d}|t kr:t ddS)Nrrrrzdigest sent was rejected)rrrSr&rr/rcrTrrrr[rrrrrrrs     rc@s$eZdZddZddZddZdS)ConnectionWrappercCs6||_||_||_dD] }t||}t|||q dS)N)rPrJrorcr[)_conn_dumps_loadsrsetattr)r;connr]riattrr_rrrr?s zConnectionWrapper.__init__cCs||}|j|dSr)r rr[)r;r_rrrrr`s zConnectionWrapper.sendcCs|j}||Sr)rrcr rrrrrks  zConnectionWrapper.recvN)ryrzr{r?r`rkrrrrrs rcCst|fdddddS)Nrutf-8) xmlrpclibr]encode)r_rrr _xml_dumps srcCst|d\\}}|S)Nr)rridecode)rr_methodrrr _xml_loadssrc@seZdZddZdS) XmlListenercCs"ddlmat|}t|ttSNr) xmlrpc.clientclientrrrrrrr^rrrrs   zXmlListener.acceptN)ryrzr{rrrrrrs rcOs"ddlmatt|i|ttSr)rrrrrrr)rkwdsrrr XmlClients rcCst|}g}|rZt|d|}|tkr |St|kr$tt|kr+nn|t8}nt|kr9tt|krCntd|t8}ntd|||||dd}d}|s|S)NFzShould not get hererr) listrrr r rTr rr)ZhandlesrLreadyrrrr_exhaustive_wait%s$   rc s |durt}n|dkrd}nt|dd}t|}ig}tt}z|D]}zt|d}Wnty@||<Yq(wz t|dd\}}Wnt yj}zd|j }}|t vr`WYd}~nd}~ww|tj kr{| |||j<q(|rtdddkrz |d\} }Wnt y}z |j }WYd}~nd}~ww|st|d rd|_|d}q(t|}W|D]}|q|D]D}z |d\} }Wnt y}z|j }|t vrWYd}~nd}~ww|tjkr|j}||dkrt|d rd|_qnU|D]}|q|D]G}z |d\} }Wnt yD}z|j }|t vr:WYd}~nd}~ww|tjkrc|j}||dkrct|d rcd|_qwfd d |Dfd d |DS)Nrrg?rPT)rFrc3s|]}|VqdSrr).0r)waithandle_to_objrr szwait..csg|]}|vr|qSrr)r!o) ready_objectsrr swait..)rintrsetrAttributeErrorr7rrrDr _ready_errorsrrrr*Zgetwindowsversionrr,raddrkeysrZERROR_OPERATION_ABORTEDupdate) object_listrZov_listZ ready_handlesr$rPrrrrr)r%r"rr;s                      r PollSelectorcCs tE}|D] }||tjq|durt|} ||}|r1dd|DWdS|durH|t}|dkrH|WdSq1sLwYdS)NTcSsg|]\}}|jqSr)Zfileobj)r!keyZeventsrrrr&sr'r) _WaitSelectorregister selectorsZ EVENT_READrrZselect)r/rZselectorr_Zdeadlinerrrrrs$    cCsf|}t|tjtj}ddlm}||}t||j |j ffWdS1s,wYdS)Nr)resource_sharer) rPr-ZfromfdrZ SOCK_STREAMr r5Z DupSocketrebuild_connectionr=r>)r r<rr5dsrrrreduce_connections   $r8cCs|}t|||Srrr)r7r=r>Zsockrrrr6sr6cCsB|jrtjnd|jr tjndB}t||}t||j|jffSr) r=rZFILE_GENERIC_READr>ZFILE_GENERIC_WRITEr Z DupHandlerPrebuild_pipe_connection)r rdhrrrreduce_pipe_connections r<cC|}t|||Sr)rr})r;r=r>r<rrrr: r:cCs t|}t||j|jffSr)r ZDupFdrPr6r=r>)r dfrrrr8scCr=rr9)r?r=r>fdrrrr6r>)NN)Tr)I__all__rr"r*r-rrr! itertoolsrr rrr contextr ZForkingPicklerr\rr r r r ImportErrorr+rZCONNECTION_TIMEOUTcountr%rZfamiliesr,rrr)r.r5r6r}robjectrrrrrrrrrrrrrrrrrrrrZERROR_NETNAME_DELETEDr+rr4r0r2ZSelectSelectorr8r6r3r<r:rrrrs            PT =   ,, 8   P