;i@D" dZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z m Z m Z m Z mZmZmZmZmZmZddlZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lm Z ddlm!Z!ddlm"Z"ddlm#Z#ddl$Zej%e&Z'd(ej)Z*dZ+ej,dduZ-ej.j/ej.j0ej.j1ej.j2ej.j3ej.j4fZ5ej.j/ej.j0ej.j1ej.j2ej.j4fZ6ej.j/ej.j2ej.j3ej.j4fZ7ej.j/ej.j2ej.j4fZ8dZ9dZ:dZ;dee<dee<fdZ=deej>dee?de?fdZ@GddeAZBdeBdej>de?ddfd ZCd!ejDdeBd"eedee fd#ZEdeBd"eede#fd$ZFd%e deBd&eejGejHfd'e"d(ee#ddf d)ZId*e?d+eBde?fd,ZJGd-d.ejKejLejMZNGd/d0ejKejOZPGd1d2ePejLejMZQGd3d4ePejLejMZRd5e dee<d'e"deee<eeSeejKffd6ZTdeBd&ejHd7eUd8ee<dee!ee!ejLfff d9ZVd:eed;eWdeeejXfd<ZYd:eed;eWdeeeejXee#ffd=ZZd>ee<dee<fd?Z[Gd@dAej\Z]GdBdCej^Z_GdDdEej^Z`GdFdGejaZbGdHdIejcZdGdJdKeWZeGdLdMeAZfdefddfdNZgdeffdOZhGdPdQeAZideidee ejjgdffdRZkdeidSejjdTee ejjgdfddfdUZldeidVee ejjgdfddfdWZmdeidXejndYeUddfdZZodeid[e ejjgdfd\eUddfd]Zpdeid[e ejjgdfddfd^Zqd_eed`eejrdeefdaZsdbeedeeeeeffdcZtGdddeejnZndS)fz.Invocation-side implementation of gRPC Python.N) AnyCallableDictIteratorListOptionalSequenceSetTupleUnion)_common) _compression)_grpcio_metadata)_observability)cygrpc)ChannelArgumentType)DeserializingFunction)IntegratedCallFactory) MetadataType)NullaryCallbackType) ResponseType)SerializingFunction)UserTagzgrpc-python/{}!GRPC_SINGLE_THREADED_UNARY_STREAMz0Exception calling channel subscription callback!z?<{} of RPC that terminated with: status = {} details = "{}" >zZ<{} of RPC that terminated with: status = {} details = "{}" debug_error_string = "{}" >timeoutreturnc6|dntj|zSN)timers AC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\grpc/_channel.py _deadliner"ms?44 g(==unknown_cygrpc_codedetailsc.d||S)Nz,Server sent unknown code {} and details "{}")format)r$r%s r!_unknown_code_detailsr(qs! : @ @W  r#c eZdZUejed<eejed<e e ed<e ed<e e ed<e e j ed<e eed<e eed<eed <eeed <e eed <e eed <e eed <e eed<e eed<deejde e de e de e j de ef dZdZdS) _RPCState conditiondueinitial_metadataresponsetrailing_metadatacoder%debug_error_string cancelled callbacks fork_epochrpc_start_time rpc_end_timemethodtargetc6tj|_t||_||_d|_||_||_||_ d|_ d|_ d|_ d|_ d|_d|_g|_t#j|_dSNF) threading Conditionr+setr,r-r.r/r0r%r1r5r6r7r8r2r3rget_fork_epochr4)selfr,r-r/r0r%s r!__init__z_RPCState.__init__s#,..s88 0 !2  "&#    /11r#c6tj|_dSr)r;r<r+r?s r!reset_postfork_childz_RPCState.reset_postfork_childs",..r#N)__name__ __module__ __qualname__r;r<__annotations__r r OperationTyperrrgrpc StatusCodestrboolrrintfloatr r@rCr#r!r*r*yss"""" V ! """"|,,,,MMM ---- 4? #### c]  %%%OOO'(((( UO###5/!!! SM SM&2 f* +&2#<0&2$L1 &2 t' &2 # &2&2&2&2P/////r#r*stater0c^|j%||_||_|jd|_d|_dSdSNrO)r0r%r-r/)rPr0r%s r!_abortrSs? z   ! )%'E ""$ r#eventresponse_deserializercg}|jD]}|}|j||tjjkr||_`|tjjkrX| }|Atj ||}|#d}t|tjj|||_|tjjkr||_|jtj|} | >tjj|_t/| ||_n9| |_||_||_t7j|_t=j|| |j!d|_!|S)Nz!Exception deserializing response!)"batch_operationstyper,removerrHreceive_initial_metadatar-receive_messagemessager deserializerSrIrJINTERNALr.receive_status_on_clientr/r0!CYGRPC_STATUS_CODE_TO_STATUS_CODEgetUNKNOWNr(r% error_stringr1r perf_counterr6rmaybe_record_rpc_latencyextendr3) rTrPrUr3batch_operationoperation_typeserialized_responser.r%r0s r! _handle_eventrjs I 1"#"#(--// ((( V1J J J%4%E%E%G%GE " " v3C C C"1"9"9";"; ".".')>#AG5$/":GDDDD%-EN v3L L L&5&G&G&I&IE #z!@DD#((**/K/K/M/ME,!%!2!4!4E   3E : : :   U_ - - -"EO r#cfd}|S)Nc j5t|}jj }dddn #1swxYwY|D]_} |#t$rE}t dt|jt|Yd}~Xd}~wwxYw|oj tj kS)NzException in callback %s: %s) r+rj notify_allr, Exception_LOGGERerrorreprfuncr4rr>)rTr3donecallbackerUrPs r! handle_eventz$_event_handler..handle_events7 _ ! !%eU4IJJI O & & ( ( (y=D ! ! ! ! ! ! ! ! ! ! ! ! ! ! !"  H      2D4G4Ga  C(F,A,C,CCCs)3AA A  A## B2-;B--B2rO)rPrUrvs`` r!_event_handlerrws0DDDDDD r#request_iteratorcallrequest_serializer event_handlercfd}tj|}|d|dS)z'Consume a request supplied by the user.c  d} tjt }n#t$rY|stjnmt $rtjd}t jj}d}t | tj ||t ||Y|stjdSdSwxYw |stjn#|stjwwxYwtj| } j5 jN jsF|Xt jj}d} tj ||t || ddddS jtjjtj|t2f}| }|s7 jtjj ddddS fd}tj jj|t;jtj  j ddddSn ddddS dddn #1swxYwY j5 j jtjj tj!t2f}| }|s) jtjj ddddS#1swxYwYdS)NTFzException iterating requests!Exception serializing request!cFjduptjjjvSr)r0rrH send_messager,)rPsr!_donezJ_consume_request_iterator..consume_request_iterator.._done<s*!Jd2-%3@#(9 -r#)spin_cb)"renter_user_request_generatornext StopIteration"return_from_user_request_generatorrnrIrJrbro exceptioncancelr !STATUS_CODE_TO_CYGRPC_STATUS_CODErS serializer+r0r2r^r,addrHrSendMessageOperation _EMPTY_FLAGSoperaterYwait functoolspartialblock_if_fork_in_progresssend_close_from_clientSendCloseFromClientOperation) *return_from_user_request_generator_invokedrequestr0r%serialized_request operations operatingrryr{rxrzrPs r!consume_request_iteratorz;_consume_request_iterator..consume_request_iterator s> 9> 6 @3555/00    B@=???   9;;;=A:.9!!'*** =dCWudG,,,A@=?????@@ B@=???B@=????@!(!27 ~_  z! f2IJJJ7 EE !LL]CC  I$$,C                  sl")D C(D BC( D'C((DD9AJ+$BJ+7A J+J++J/2J/?B MMMr8TNrForkManagedThread setDaemonstart)rxrPryrzr{rconsumption_threads````` r!_consume_request_iteratorrsLLLLLLLLL\ 1'  &&&r# class_name rpc_statec|j5|j!d|cdddS|jtjjur2t ||j|jcdddSt||j|j|j cdddS#1swxYwYdS)z Calculates error string for RPC.Nz <{} object>) r+r0r'rIrJOK_OK_RENDEZVOUS_REPR_FORMATr%_NON_OK_RENDEZVOUS_REPR_FORMATr1)rrs r!_rpc_state_stringras4     > ! '' 33          >T_/ / /-44INI,=         .44  N    (                      sB3=B3;+B33B7:B7ceZdZUdZeed<defdZdeefdZ deefdZ dee j fdZ deefd Zdeefd Zdefd Zdefd Zdefd ZdefdZdefdZdefdZdefdZ ddeedefdZ ddeedeefdZ ddeedeejfdZ dde!e j"gdfdeeddfdZ#dS)_InactiveRpcErrorzAn RPC error not tied to the execution of a particular RPC. The RPC represented by the state object must not be in-progress or cancelled. Attributes: _state: An instance of _RPCState. _staterPc |j5tdtj|jtj|j|jtj|j|_tj|j |j_ tj|j |j_ ddddS#1swxYwYdSrR) r+r*copydeepcopyr-r/r0r%rr.r1r?rPs r!r@z_InactiveRpcError.__init__~s _ Q Q# e455 e566  em,, DK$(9U^#<#>CCrc|jjSrrr-rBs r!r-z"_InactiveRpcError.initial_metadatas {++r#c|jjSrrr/rBs r!r/z#_InactiveRpcError.trailing_metadatas {,,r#c|jjSrrr0rBs r!r0z_InactiveRpcError.codes {r#c>tj|jjSr)r decoderr%rBs r!r%z_InactiveRpcError.detailss~dk1222r#c>tj|jjSr)r rrr1rBs r!r1z$_InactiveRpcError.debug_error_strings~dk<===r#c@t|jj|jSrr __class__rDrrBs r!_reprz_InactiveRpcError._repr !8$+FFFr#c*|SrrrBs r!__repr__z_InactiveRpcError.__repr__zz||r#c*|SrrrBs r!__str__z_InactiveRpcError.__str__rr#cdS)zSee grpc.Future.cancel.FrOrBs r!rz_InactiveRpcError.cancelur#cdS)zSee grpc.Future.cancelled.FrOrBs r!r2z_InactiveRpcError.cancelledrr#cdS)zSee grpc.Future.running.FrOrBs r!runningz_InactiveRpcError.runningrr#cdS)zSee grpc.Future.done.TrOrBs r!rsz_InactiveRpcError.donestr#Nrc|)zSee grpc.Future.result.rOr?rs r!resultz_InactiveRpcError.results  r#c|S)zSee grpc.Future.exception.rOrs r!rz_InactiveRpcError.exceptions  r#cd |#tj$rtjdcYSwxYw)zSee grpc.Future.traceback.)rIRpcErrorsysexc_infors r! tracebackz_InactiveRpcError.tracebacks@ %J} % % %<>>!$ $ $ $ %s (//fnc||dS)z"See grpc.Future.add_done_callback.NrO)r?rrs r!add_done_callbackz#_InactiveRpcError.add_done_callbacks 4r#r)$rDrErF__doc__r*rGr@rrr-r/rIrJr0rKr%r1rrrrLrr2rrsrNrrrnrtypes TracebackTyperrFuturerrOr#r!rrrs  Qi Q Q Q Q,(<"8,,,,-8L#9---- ht/    3#3333>HSM>>>>GsGGGG#4d *. *. ) *.%%% %% &%%%%$( dk]D( )%  r#rc reZdZUdZeed<eejej fed<e e ed<e e ed<dedeejej fde e d e e ffd Z d efd Zd e e fd Zd efdZded efdZdZdZdZdZd e efdZd efdZd efdZd efdZddZxZS) _RendezvousaAn RPC iterator. Attributes: _state: An instance of _RPCState. _call: An instance of SegregatedCall or IntegratedCall. In either case, the _call object is expected to have operate, cancel, and next_event methods. _response_deserializer: A callable taking bytes and return a Python object. _deadline: A float representing the deadline of the RPC in seconds. Or possibly None, to represent an RPC with no deadline at all. r_call_response_deserializerr"rPryrUdeadlinectt|||_||_||_||_dSr)superrr@rrrr")r?rPryrUrrs r!r@z_Rendezvous.__init__sB k4  ))+++  &;#!r#rcj|jj5|jjducdddS#1swxYwYdS)zSee grpc.RpcContext.is_activeNrr+r0rBs r! is_activez_Rendezvous.is_actives~ [ " , ,;#t+ , , , , , , , , , , , , , , , , , , (,,c|jj5|j ddddSt|jt jz dcdddS#1swxYwYdS)z"See grpc.RpcContext.time_remainingNr)rr+r"maxrrBs r!time_remainingz_Rendezvous.time_remainings [ " 8 8~% 8 8 8 8 8 8 8 8t~ 3Q77 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s A(AAAc|jj5|jjtjj}d}|jtj ||d|j_ t|j|||jj  ddddS ddddS#1swxYwYdS)zSee grpc.RpcContext.cancelNz!Locally cancelled by application!TF) rr+r0rIrJ CANCELLEDrrr rr2rSrm)r?r0r%s r!rz_Rendezvous.cancels [ "  {'0= !!=dCW)- %t{D'222 %00222                          sB B4&B44B8;B8rtc|jj5|jj ddddS|jj| ddddS#1swxYwYdS)z See grpc.RpcContext.add_callbackNFT)rr+r3appendr?rts r! add_callbackz_Rendezvous.add_callback s [ "  {$,         K ! ( ( 2 2 2                   sA AAAc|SrrOrBs r!__iter__z_Rendezvous.__iter__ r#c*|Sr_nextrBs r!rz_Rendezvous.nextrr#c*|SrrrBs r!__next__z_Rendezvous.__next__rr#ctrNotImplementedErrorrBs r!rz_Rendezvous._next!###r#ctrrrBs r!r1z_Rendezvous.debug_error_stringrr#c@t|jj|jSrrrBs r!rz_Rendezvous._repr"rr#c*|SrrrBs r!rz_Rendezvous.__repr__%rr#c*|SrrrBs r!rz_Rendezvous.__str__(rr#Nc|jj5|jjtjj|j_d|j_d|j_|j tj |jj|jj|jj ddddS#1swxYwYdS)Nz"Cancelled upon garbage collection!T) rr+r0rIrJrr%r2rrr rrmrBs r!__del__z_Rendezvous.__del__+s [ " 3 3{'#'?#<  &J #(, % !!=dk>NOK' %00222 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3sBB77B;>B;rN)rDrErFrr*rGr rSegregatedCallIntegratedCallrrrNr@rLrrrrrrrrrrKr1rrrr __classcell__rs@r!rrs    &(== >>>>$%:;;;; " "F)6+@@A " ((=> " 5/ " " " " " ",4,,,, 88888     %8T$$$$HSM$$$$GsGGGG# 3 3 3 3 3 3 3 3r#rceZdZUdZeed<defdZdefdZdefdZ defdZ dd e e de fd Zdd e e de efd Z dd e e de ejfd Zd eejgdfddfdZde efdZde efdZde ejfdZde efdZde ej fdZ!de fdZ"de fdZ#de efdZ$dS)_SingleThreadedRendezvousaNAn RPC iterator operating entirely on a single thread. The __next__ method of _SingleThreadedRendezvous does not depend on the existence of any other thread, including the "channel spin thread". However, this means that its interface is entirely synchronous. So this class cannot completely fulfill the grpc.Future interface. The result, exception, and traceback methods will never block and will instead raise an exception if calling the method would result in blocking. This means that these methods are safe to call from add_done_callback handlers. rrc|jjduSrrrBs r! _is_completez&_SingleThreadedRendezvous._is_completeJ{t++r#cf|jj5|jjcdddS#1swxYwYdSrrr+r2rBs r!r2z#_SingleThreadedRendezvous.cancelledMy [ " ) );( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) &**cj|jj5|jjducdddS#1swxYwYdSrrrBs r!rz!_SingleThreadedRendezvous.runningQ~ [ " , ,;#t+ , , , , , , , , , , , , , , , , , ,rcj|jj5|jjducdddS#1swxYwYdSrrrBs r!rsz_SingleThreadedRendezvous.doneU~ [ " 0 0;#4/ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0rNrcN~|jj5|s!d}tj||jjtjjur|jj cdddS|jj rtj |#1swxYwYdS)a9Returns the result of the computation or raises its exception. This method will never block. Instead, it will raise an exception if calling this method would otherwise result in blocking. Since this method will never block, any `timeout` argument passed will be ignored. zJ_SingleThreadedRendezvous only supports result() when the RPC is complete.N) rr+r rI experimental UsageErrorr0rJrr.r2FutureCancelledErrorr?r error_msgs r!rz _SingleThreadedRendezvous.resultYs  [ "  $$&& >9'229==={4?#555{+        {$ /111           sAB9!BB!BcR~|jj5|s!d}tj||jjtjjur ddddS|jj rtj |cdddS#1swxYwYdS)a*Return the exception raised by the computation. This method will never block. Instead, it will raise an exception if calling this method would otherwise result in blocking. Since this method will never block, any `timeout` argument passed will be ignored. zM_SingleThreadedRendezvous only supports exception() when the RPC is complete.N) rr+r rIrrr0rJrr2rrs r!rz#_SingleThreadedRendezvous.exceptionqs  [ "  $$&& ><'229==={4?#555        {$ /111                  sAB/ BB #B c~|jj5|s!d}tj||jjtjjur ddddS|jj rtj  |#tj $r(tj dcYcdddSwxYw#1swxYwYdS)a;Access the traceback of the exception raised by the computation. This method will never block. Instead, it will raise an exception if calling this method would otherwise result in blocking. Since this method will never block, any `timeout` argument passed will be ignored. zM_SingleThreadedRendezvous only supports traceback() when the RPC is complete.Nr)rr+r rIrrr0rJrr2rrrr)r?rmsgs r!rz#_SingleThreadedRendezvous.tracebacksF  [ " - -$$&& 8<'223777{4?#555 - - - - - - - -{$ -/111-J}---<>>!,,, - - - - - - - -- - - - - - - - - - -s6AC /C B(C9C CC  CCrc|jj5|jj@|jjt j|| ddddS dddn #1swxYwY||dSrrr+r0r3rrrr?rs r!rz+_SingleThreadedRendezvous.add_done_callback [ "  {' %,,Y->r4-H-HIII        '                4AA''A+.A+c|jj5|jj ||jj |jjcdddS#1swxYwYdS)See grpc.Call.initial_metadataN)rr+r-_consume_next_eventrBs r!r-z*_SingleThreadedRendezvous.initial_metadatas [ " 0 0+.6((***+.6;/  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s8AAAc|jj5|jj!d}tj||jjcdddS#1swxYwYdS)See grpc.Call.trailing_metadataNz4Cannot get trailing metadata until RPC is completed.)rr+r/rIrrr?rs r!r/z+_SingleThreadedRendezvous.trailing_metadatas [ " 1 1{,4J'229===;0  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 19AAAc|jj5|jj!d}tj||jjcdddS#1swxYwYdS)See grpc.Call.codeNz'Cannot get code until RPC is completed.)rr+r0rIrrr&s r!r0z_SingleThreadedRendezvous.codes [ " $ ${'E '229===;#  $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $r'c|jj5|jj!d}tj|t j|jjcdddS#1swxYwYdS)See grpc.Call.detailsNz*Cannot get details until RPC is completed.)rr+r%rIrrr rr&s r!r%z!_SingleThreadedRendezvous.detailss [ " 7 7{"*H '229===>$+"566  7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7A A%%A),A)c|j}|jj5t ||j|j}|D] }| dddn #1swxYwY|Sr)r next_eventrr+rjr)r?rTr3rts r!r#z-_SingleThreadedRendezvous._consume_next_events %%'' [ "  %t{D$?I&                     s+AA"%A"c ||jj5|jj&|jj}d|j_|cdddStjj|jjvr9|jjtj j urt|jj|dddn #1swxYwYr) r#rr+r.rrHr[r,r0rIrJrr)r?r.s r!_next_responsez(_SingleThreadedRendezvous._next_responses #  $ $ & & && # #;'3#{3H+/DK(# # # # # # # # # '7t{NN{'4?+===+oo-)5"  # # # # # # # # # # # # # # # #s&B7AB77B;>B;c|jj5|jj|jjt jj|j t j tfd}|s.|jj t jjn-|jjtjjurt!|dddn #1swxYwY|Sr)rr+r0r,rrrHr[rrReceiveMessageOperationrrYrIrJrrr0)r?rs r!rz_SingleThreadedRendezvous._nexts [ "  {' ##F$8$HIII J..3LAACT !QKO**6+?+OPPP!T_%777#oo% -               .""$$$sC C%%C),C)c|jj5|jj!d}tj|t j|jjcdddS#1swxYwYdS)Nz5Cannot get debug error string until RPC is completed.)rr+r1rIrrr rr&s r!r1z,_SingleThreadedRendezvous.debug_error_strings [ " B B{-5K'229===>$+"@AA  B B B B B B B B B B B B B B B B B Br,r)%rDrErFrr*rGrLr r2rrsrrNrrrnrrrrrrIrrrr-r/rJr0rKr%r BaseEventr#r0rr1rOr#r!rr8s_   ,d,,,,)4)))),,,,,0d0000huo0%HY%?     # # # # #%s%%%%4BHSMBBBBBBr#rceZdZUdZeed<deefdZdeefdZ dee j fdZ dee fdZdee fdZdefd Zdefd Zdefd Zdefd ZddeedefdZddeedeefdZ ddeedeejfdZdee jgd fdd fdZdefdZ d S)_MultiThreadedRendezvousaAn RPC iterator that depends on a channel spin thread. This iterator relies upon a per-channel thread running in the background, dequeueing events from the completion queue, and notifying threads waiting on the threading.Condition object in the _RPCState object. This extra thread allows _MultiThreadedRendezvous to fulfill the grpc.Future interface and to mediate a bidirection streaming RPC. rrcjj5fd}tjjjj|jjcdddS#1swxYwYdS)r"c jjduSrrrBsr!rz8_MultiThreadedRendezvous.initial_metadata.._done"s{34??r#N)rr+r rr-r?rs` r!r-z)_MultiThreadedRendezvous.initial_metadatas [ " 0 0 @ @ @ @ @ L.3U ; ; ;;/  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 05AAAcjj5fd}tjjjj|jjcdddS#1swxYwYdS)r%c jjduSrrrBsr!rz9_MultiThreadedRendezvous.trailing_metadata.._done,s{4D@@r#N)rr+r rr/r9s` r!r/z*_MultiThreadedRendezvous.trailing_metadata(s [ " 1 1 A A A A A L.3U ; ; ;;0  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1r:cjj5fd}tjjjj|jjcdddS#1swxYwYdS)r)c jjduSrrrBsr!rz,_MultiThreadedRendezvous.code.._done6s{'t33r#N)rr+r rr0r9s` r!r0z_MultiThreadedRendezvous.code2s [ " $ $ 4 4 4 4 4 L.3U ; ; ;;#  $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $r:cjj5fd}tjjjj|tjjjcdddS#1swxYwYdS)r+c jjduSr)rr%rBsr!rz/_MultiThreadedRendezvous.details.._done@s{*$66r#N)rr+r rrr%r9s` r!r%z _MultiThreadedRendezvous.details<s [ " 7 7 7 7 7 7 7 L.3U ; ; ;>$+"566  7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7AA""A&)A&cjj5fd}tjjjj|tjjjcdddS#1swxYwYdS)Nc jjduSr)rr1rBsr!rz:_MultiThreadedRendezvous.debug_error_string.._doneIs{5TAAr#)rr+r rrr1r9s` r!r1z+_MultiThreadedRendezvous.debug_error_stringFs [ " B B B B B B B L.3U ; ; ;>$+"@AA  B B B B B B B B B B B B B B B B B BrAcf|jj5|jjcdddS#1swxYwYdSrr rBs r!r2z"_MultiThreadedRendezvous.cancelledOr rcj|jj5|jjducdddS#1swxYwYdSrrrBs r!rz _MultiThreadedRendezvous.runningSrrcj|jj5|jjducdddS#1swxYwYdSrrrBs r!rsz_MultiThreadedRendezvous.doneWrrc|jjduSrrrBs r!r z%_MultiThreadedRendezvous._is_complete[r r#Nrcb|jj5tj|jjj|j|}|rt j|jjt jj ur|jj cdddS|jj rt j |#1swxYwYdS)zReturns the result of the computation or raises its exception. See grpc.Future.result for the full API contract. r N) rr+r rr rIFutureTimeoutErrorr0rJrr.r2rr?r timed_outs r!rz_MultiThreadedRendezvous.result^s [ "    %*D,=wI -///!T_%777{+        & /111           sA)B$!B$$B(+B(cf|jj5tj|jjj|j|}|rt j|jjt jj ur ddddS|jj rt j |cdddS#1swxYwYdS)zvReturn the exception raised by the computation. See grpc.Future.exception for the full API contract. r N) rr+r rr rIrIr0rJrr2rrJs r!rz"_MultiThreadedRendezvous.exceptionps [ "    %*D,=wI -///!T_%777        & /111                  sAB&9 B&&B*-B*c|jj5tj|jjj|j|}|rt j|jjt jj ur ddddS|jj rt j  |#t j $r(tjdcYcdddSwxYw#1swxYwYdS)zAccess the traceback of the exception raised by the computation. See grpc.future.traceback for the full API contract. r Nr)rr+r rr rIrIr0rJrr2rrrrrJs r!rz"_MultiThreadedRendezvous.tracebacksM[ " - -  %*D,=wI --///!T_%777 - - - - - - - -& -/111-J}---<>>!,,, - - - - - - - -- - - - - - - - - - -s6AC9CB(CCCCCCrc|jj5|jj@|jjt j|| ddddS dddn #1swxYwY||dSrrrs r!rz*_MultiThreadedRendezvous.add_done_callbackrr c~jj5jjtjj}jjtjj j tj tf|}|s.jjtjj n-jjtjjurt%fd}t'jjjj|jj&jj}dj_|cdddStjj jjvr9jjtjjurt%jjddddS#1swxYwYdS)Ncvjjdup*tjjjjvo jjduSr)rr.rrHr[r,r0rBsr!_response_readyz7_MultiThreadedRendezvous._next.._response_readys>{+47(8 O5 (4r#)rr+r0rwrr,rrrHr[rrr2rrYrIrJrrr rr.)r?r{rrQr.s` r!rz_MultiThreadedRendezvous._nexts [ "  {' .K!<!!  ##F$8$HIII J..3LAAC! !QKO**6+?+OPPP!T_%777#oo%       L.3_ E E E{#/;/'+ $7        8#34;?JJ;#t'999'//)[%1JA                  sD4F2AF22F69F6r)!rDrErFrr*rGrrr-r/rIrJr0rKr%r1rLr2rrsr rNrrrnrrrrrrrrrOr#r!r6r6s 0(<"8000018L#91111$ht/$$$$7#7777BHSMBBBB)4)))),,,,,0d0000,d,,,,huo$%HY:- -~ E " ""r#metadatainitial_metadata_flagsctj||tjttjtftjtffSr)rSendInitialMetadataOperationr2rReceiveStatusOnClientOperationReceiveInitialMetadataOperationrXrYs r!#_stream_unary_invocation_operationsr_sZ  /0    *< 8 8  1, ? ?    / = =?  r#cPtdt||DS)Nc3K|]}|dfV dSrrO).0rs r! z?_stream_unary_invocation_operations_and_tags..s@    r#)tupler_r^s r!,_stream_unary_invocation_operations_and_tagsresD  > ,    r# user_deadlinecltj}||dS|||S|||St||Sr)rget_deadline_from_contextmin)rfparent_deadlines r!_determine_deadlinerksR688O=#8t"}'< _%<  . ..r#ceZdZUejed<eed<eed<eed<ee ed<ee ed<e ed<ee ed<gd Z d ejd ed ed edee dee dee fdZde deedeedeedeejdeeeeeejeeeejff dZ dde deedeedeejdeedeejdeeejffdZ dde deedeedeejdeedeejde fdZ dde deedeedeejdeedeejdee ejffdZ dde deedeedeejdeedeejde fdZ!dS)_UnaryUnaryMultiCallable_channel _managed_call_method_target_request_serializerr_context_registered_call_handlernrorprqrrrrschannel managed_callr7r8rzrUc||_||_||_||_||_||_t j|_||_ dSr rnrorprqrrrrbuild_census_contextrsrtr?rvrwr7r8rzrUrts r!r@z!_UnaryUnaryMultiCallable.__init__$O  )  #5 &;#355 '>$$$r#rrrXwait_for_ready compressionrc t|||j\}}}t|} t j||} |ddd|fSt tdddd} tj | | tj |ttj ttj ttjttjtf} | | |dfSr)rSrr_InitialMetadataFlagswith_wait_for_readyraugment_metadatar*_UNARY_UNARY_INITIAL_DUErr[rrrr]r2r\) r?rrrXr}r~rrrVrYaugmented_metadatarPrs r!_preparez!_UnaryUnaryMultiCallable._prepare7s4H Wd64 4 0$j"7!8!8!L!L " " *: k    %tZ/ /2D$dKK  /"$:    '(:L I I  / = =  2< @ @  *< 8 8  1, ? ?  j(D00r#N credentialsc ||||||\}}} } || tj|_t j|j|_t j|j|_ |j tj j|jdt| ||dn|j|dff|j|j } | } t)| ||j|| fSr)rrrdr5r rrpr7rqr8rnsegregated_callrPropagationConstantsGRPC_PROPAGATE_DEFAULTSrk _credentialsrsrtr.rjr) r?rrrXrr}r~rPrrrVryrTs r! _blockingz"_UnaryUnaryMultiCallable._blocking\s37-- Wh 3 3 /z8Z = #'#4#6#6E ">$,77EL">$,77EL=00+C #H--#+1I#  ,D OO%%E %(C D D D$; r#c`|||||||\}}t||ddSr:rrW r?rrrXrr}r~rPrys r!__call__z!_UnaryUnaryMultiCallable.__call__s>nn Wh ^[  t,E4EEEr#c`|||||||\}}t||ddSNTrrs r!rTz"_UnaryUnaryMultiCallable.with_calls>nn Wh ^[  t,E4tDDDr#c ||||||\}}} } || t||j} tj|_t j|j|_ t j|j |_ | tjj|jd| ||dn|j|f| |j|j } t'|| |j| Sr)rrwrrrdr5r rrpr7rqr8rorrrrrsrtr6) r?rrrXrr}r~rPrrrVr{rys r!futurez_UnaryUnaryMultiCallable.futures37-- Wh 3 3 /z8Z = *5$2MNNM#'#4#6#6E ">$,77EL">$,77EL%%+C #+1I  ,  D,tT8( r#NNNNN)"rDrErFrChannelrGrbytesrrrrrM __slots__r@rNrrLrI Compressionr r*r OperationrrCallCredentialsrrrCallrTr6rrOr#r!rmrmsn(((( NNN NNN!"56666$%:;;;;MMM%c]***I??,? ?  ? %%89 ? ((=>?"*#????&#1#1%#1<( #1 ! #1 d./ #1 &*+, ! #1#1#1#1P$(+/6:)-26$$$%$<( $ d23 $ ! $d./$ y&// 0$$$$R$(+/6:)-26 F F F% F<( F d23 F ! Fd./ F  F F F F"$(+/6:)-26 E E E% E<( E d23 E ! Ed./ E sDI~  E E E E"$(+/6:)-26!!!%!<( ! d23 ! ! !d./! "!!!!!!r#rmcBeZdZUejed<eed<eed<eeed<ee ed<e ed<ee ed<gdZ d ejd ed ed ed e dee f dZ dde deedeedeejdeedeejdefdZdS)'_SingleThreadedUnaryStreamMultiCallablernrprqrrrrsrt)rnrprqrrrrsrvr7r8rzrUc||_||_||_||_||_t j|_||_dSr) rnrprqrrrrrzrsrt)r?rvr7r8rzrUrts r!r@z0_SingleThreadedUnaryStreamMultiCallable.__init__sG    #5 &;#355 '>$$$r#NrrrXrr}r~rc t|}tj||j}|1t dddt jjd} t| t tdddd} |dn|j } t |} tj||} tj| | tj|t$tjt$ftjt$ftjt$ff} t-d| D}t/j| _tj|j| _tj|j| _|j tj!j"|jdtG||| ||j$|j% }tM| ||j'|S)NrOr~c3K|]}|dfV dSrrO)rbopss r!rczC_SingleThreadedUnaryStreamMultiCallable.__call__..s&#F#FCS$K#F#F#F#F#F#Fr#)(r"r rrrr*rIrJr^r_UNARY_STREAM_INITIAL_DUErrrrrrr[rrrr\r]rdrrdr5rrpr7rqr8rnrrrrkrsrtrr)r?rrrXrr}r~rrrPcall_credentialsrYrroperations_and_tagsrys r!rz0_SingleThreadedUnaryStreamMultiCallable.__call__sW%%$. T-    %(0 E$E** *3T4tLL'DD[-E "7!8!8!L!L " " *: k   3&(>+,> MM3LAA   2< @ @ B  3L A A C  $#F#F:#F#F#FFF#022~dl33 ~dl33 },,  ' ? L   ) )    M  (   ) 44h   r#r)rDrErFrrrGrrrrrrMrr@rNrrIrrLrrrrOr#r!rrscn NNN NNN!"56666$%:;;;;MMM%c]***I??? ? 0 ? 5 ?"*#????($(+/6:)-26= = = %= <( = d23 = ! = d./=  #= = = = = = r#rcPeZdZUejed<eed<eed<eed<ee ed<ee ed<e ed<ee ed<gd Z d ejd ed ed ede de dee fdZ dde deedeedeejdeedeejdefdZdS)_UnaryStreamMultiCallablernrorprqrrrrsrtrurvrwr7r8rzrUc||_||_||_||_||_||_t j|_||_ dSrryr{s r!r@z"_UnaryStreamMultiCallable.__init__;r|r#NrrrXrr}r~rc lt|||j\}}} t|} || t j||} t tdddd} tj | | tj |ttj ttj tftjtff} tj| _t%j|j| _t%j|j| _|tjj|jdt7|||dn|j| t;| |j|j|j }tC| ||j|Sr)"rSrrrrrrr*rrr[rrrr\r]rrdr5r rrpr7rqr8rorrrkrrwrrsrtr6)r?rrrXrr}r~rrrVrYrrPrrys r!rz"_UnaryStreamMultiCallable.__call__Ns4H Wd64 4 0$j"7!8!8!L!L " "   % !-!>+"" 7tT4PPE7*,B/*L7 EE9,GG 7 EEG J$(#4#6#6E ">$,77EL">$,77EL%%+C #H--#+1Iud&ABB ,  D,tT8( r#r)rDrErFrrrGrrrrrrrMrr@rNrrIrrLrr6rrOr#r!rr&syn(((( NNN NNN!"56666$%:;;;;MMM%c]***I??,? ?  ? 0 ? 5?"*#????,$(+/6:)-26444%4<( 4 d23 4 ! 4d./4 "444444r#rceZdZUejed<eed<eed<eed<ee ed<ee ed<e ed<ee ed<gd Z d ejd ed ed edee dee dee fdZdedeedeedeejdeedeejdeeejffdZ ddedeedeedeejdeedeejde fdZ ddedeedeedeejdeedeejdee ejffdZ ddedeedeedeejdeedeejdefdZdS)_StreamUnaryMultiCallablernrorprqrrrrsrtrurvrwr7r8rzrUc||_||_||_||_||_||_t j|_||_ dSrryr{s r!r@z"_StreamUnaryMultiCallable.__init__r|r#rxrrXrr}r~rc Vt|}ttdddd}t|} t j||} tj|_ tj |j |_ tj |j|_|jt$jj|j dt+|| |dn|jt/| | |j|j } t5||| |jd | } |j5t=| ||j|j |j!s dddn dddn #1swxYwYx|| fSr)"r"r*_STREAM_UNARY_INITIAL_DUErrrrrrdr5r rrpr7rqr8rnrrrrrkrrersrtrrrr.r+rjrrmr,) r?rxrrXrr}r~rrPrYrryrTs r!rz#_StreamUnaryMultiCallable._blockingsW%%3T4tLL!6!8!8!L!L " " *: k   $022~dl33 ~dl33 },,  ' ? L   ) ) 'DD[-E 8"$:   M  (    " eT4+CT    OO%%E  eUD,GHHH**,,,y                        d{s 8FF"FNc`|||||||\}}t||ddSr:r r?rxrrXrr}r~rPrys r!rz"_StreamUnaryMultiCallable.__call__sCnn         t,E4EEEr#c`|||||||\}}t||ddSrrrs r!rTz#_StreamUnaryMultiCallable.with_callsCnn         t,E4tDDDr#c t|}ttdddd}t||j} t |} tj||} tj |_ tj |j|_tj |j|_|t&jj|jd|| |dn|jt/|| | |j|j } t5||| |j| t9|| |j|Sr)r"r*rrwrrrrrrrdr5r rrpr7rqr8rorrrrr_rsrtrrrr6) r?rxrrXrr}r~rrPr{rYrrys r!rz _StreamUnaryMultiCallable.futuresOW%%3T4tLL&ud.IJJ !6!8!8!L!L " " *: k   $022~dl33 ~dl33 !!  ' ? L   'DD[-E /0    M  (    "     $     ( 44h   r#r)rDrErFrrrGrrrrrrrMrr@rrNrrIrrLrr r*rrrrrTr6rrOr#r!rrsAn(((( NNN NNN!"56666$%:;;;;MMM%c]***I??,? ?  ? %%89 ? ((=>?"*#????&+"+%+<( + d23 + ! +d./+ y&// 0++++`$(+/6:)-26FF"F%F<( F d23 F ! Fd./F FFFF,$(+/6:)-26EE"E%E<( E d23 E ! Ed./E sDI~ EEEE,$(+/6:)-26, , ", %, <( , d23 , ! , d./,  ", , , , , , r#rcheZdZUejed<eed<eed<eed<ee ed<ee ed<e ed<ee ed<gd Z d ejd ed ed edee dee dee fdZ ddedeedeedeejdeedeejdefdZdS)_StreamStreamMultiCallablernrorprqrrrrsrtrurvrwr7r8rzrUc||_||_||_||_||_||_t j|_||_ dSrryr{s r!r@z#_StreamStreamMultiCallable.__init__Dr|r#NrxrrXrr}r~rc  t|}ttdddd}t|} t j||} tj| | tj tftj tff} t||j } tj|_t#j|j|_t#j|j|_|tjj|jdt5|| |dn|j| | |j|j } t=||| |j| tA|| |j |Sr)!r"r*_STREAM_STREAM_INITIAL_DUErrrrrr[r\rr]rwrrrdr5r rrpr7rqr8rorrrkrrsrtrrrr6)r?rxrrXrr}r~rrPrYrrr{rys r!rz#_StreamStreamMultiCallable.__call__WsW%%4dD$MM!6!8!8!L!L " " *: k   3&(>5lCC    3L A A C 'ud.IJJ #022~dl33 ~dl33 !!  ' ? L   ) ) 'DD[-E   M  (    "     $     ( 44h   r#r)rDrErFrrrGrrrrrrrMrr@rrNrrIrrLrr6rrOr#r!rr/sn(((( NNN NNN!"56666$%:;;;;MMM%c]***I??,? ?  ? %%89 ? ((=>?"*#????,$(+/6:)-263 3 "3 %3 <( 3 d23 3 ! 3 d./3  "3 3 3 3 3 3 r#rcHeZdZdZefdeffd ZdeedefdZ xZ S)rz'Stores immutable initial metadata flagsvaluec~|tjjz}tt|||Sr)rInitialMetadataFlags used_maskrr__new__)clsrrs r!rz_InitialMetadataFlags.__new__s4 ,66*C0088eDDDr#r}rc|w|r9||tjjztjjzS|s:||tjjztjjzS|Sr)rrrr}wait_for_ready_explicitly_set)r?r}s r!rz)_InitialMetadataFlags.with_wait_for_readys  % ~~1@A1OP " ~~F7FFF1OP r#) rDrErFrrrMrrrLrrrs@r!rrs11".EECEEEEEE (4. S        r#rc\eZdZUejed<eed<eed<dejfdZd dZ dZ dS) _ChannelCallStaterv managed_callsr;c`tj|_||_d|_d|_dS)NrF)r;Locklockrvrr?rvs r!r@z_ChannelCallState.__init__s+N$$  r#rNcd|_dS)Nr)rrBs r!rCz&_ChannelCallState.reset_postfork_childsr#c |jtjjddS#t t f$rYdSwxYw)NzChannel deallocated!)rvcloserrJr2 TypeErrorAttributeErrorrBs r!rz_ChannelCallState.__del__s`  L  !+-C     >*    DD s*.AAr) rDrErFrrrGrMrLr@rCrrOr#r!rrsy ^OOO r#rcfd}tj|}|d|dS)NcX tjj}|jtjjkrI||}|rIj5xj dzc_ j dkr ddddS dddn #1swxYwY)NTr) rrrvnext_call_eventcompletion_typeCompletionType queue_timeouttagrr)rTcall_completedrPs r! channel_spinz._run_channel_spin_thread..channel_spins   ,U 3 3 3M1133E$(=(KKK"YYu--N Z''1,''*a/// s)B  B$'B$rTr)rPrchannel_spin_threads` r!_run_channel_spin_threadrs^     !2,GGG!!$'''r#cfdtdtdttdttdtt dtt jdttt j dtd td ttd t j ffd }|S) Nflagsr7hostrrXrrr{contextrtrc *tfd|D} j5 j||||||| || } jdkrd _t n xjdz c_| cdddS#1swxYwYdS)aCreates a cygrpc.IntegratedCall. Args: flags: An integer bitfield of call flags. method: The RPC method. host: A host string for the created call. deadline: A float to be the deadline of the created call or None if the call is to have an infinite deadline. metadata: The metadata for the call or None. credentials: A cygrpc.CallCredentials or None. operations: A sequence of sequences of cygrpc.Operations to be started on the call. event_handler: A behavior to call to handle the events resultant from the operations on the call. context: Context object for distributed tracing. _registered_call_handle: An int representing the call handle of the method, or None if the method is not registered. Returns: A cygrpc.IntegratedCall with which to conduct an RPC. c3 K|]}|fV dSrrO)rb operationr{s r!rczC_channel_managed_call_management..create..sA$ $  $ $ $ $ $ $ r#rrN)rdrrvintegrated_callrr) rr7rrrXrrr{rrtrryrPs ` r!createz0_channel_managed_call_management..createsB$$ $ $ $ ( $ $ $   Z  =00#'  D"a''&'#(////##q(###                  sABB B ) rMrrrKrNrrrr rrrr)rPrs` r! _channel_managed_call_managementrs999sm95/ 9 <( 9 f45 9Xf&678999"*#9  999999v Mr#ceZdZUejed<ejed<eed<ej ed<eed<e e e e ej gdfeej fed<eed<dejfd Zd d ZdS) _ChannelConnectivityStaterrvpolling connectivitytry_to_connectNcallbacks_and_connectivities deliveringctj|_||_d|_d|_d|_g|_d|_dSr:) r;RLockrrvrrrrrrs r!r@z"_ChannelConnectivityState.__init__sBO%%    #,.)r#rcLd|_d|_d|_g|_d|_dSr:)rrrrrrBs r!rCz._ChannelConnectivityState.reset_postfork_child(s,  #,.)r#r)rDrErFr;rrGrIrrLChannelConnectivityrr r rrr@rCrOr#r!rrs / \ MMM****"& $23T9:124  #            r#rcxg}|jD]/}|\}}||jur|||j|d<0|S)Nr)rrr)rPcallbacks_needing_updatecallback_and_connectivityrtcallback_connectivitys r! _deliveriesr0s_ "%*%G>>!*C'' (: : : $ + +H 5 5 5+0+= %a ( ##r#initial_connectivityinitial_callbackscR|}|} |D]Q}tj| ||##t$r"tt YNwxYw|j5t|}|r|j}nd|_ ddddS dddn #1swxYwY)NTF) rrrnror0_CHANNEL_SUBSCRIPTION_CALLBACK_ERROR_LOG_MESSAGErrrr)rPrrrr3rts r!_deliverr<sF (L!I!  H  ,U 3 3 3 &&&&   !!D Z  #E**I $1 #(                         s! +)AA!"BB!$B!r3ctjt||j|f}|d|d|_dSN)r8argsT)rrrrrrr)rPr3delivering_threads r!_spawn_deliveryrUsf0     %%%Er#rvinitial_try_to_connectcL|}||}|j5tj||_t d|jD}|jD] }|j|d< |rt||dddn #1swxYwY ||tj dz}tj ||j5|js#|j sd|_ d|_ ddddS|j }d|_ dddn #1swxYwY|js|rs||}|j5tj||_|js!t!|}|rt||dddn #1swxYwY)Nc3 K|] \}}|V dSrrO)rbrt_s r!rcz%_poll_connectivity..ts7  $1H      r#rTg?F)check_connectivity_staterr 1CYGRPC_CONNECTIVITY_STATE_TO_CHANNEL_CONNECTIVITYrrdrrwatch_connectivity_staterrrrrsuccessrr)rPrvrrrr3rrTs r!_poll_connectivityrgs ,N33NCCL  . .  E     (-(J     */)K > > %+0+= %a ( (  . E9 - - - . . . . . . . . . . . . . . .:00 $)+++   (/// Z ) )6 , !& %)" ) ) ) ) ) ) ) )#1N#(E  ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) = :N :";;NKKL : :M$" ': +E 2 2I :'y999 : : : : : : : : : : : : : : :#:s=ABB B DDD!$D! AFF Frtrc |j5|js|js}tjt ||jt|f}|d| d|_|j |dgn|j sW|j Pt||f|xjt|zc_|j ||j gn9|xjt|zc_|j |dgddddS#1swxYwYdSr)rrrrrrrvrLrrrrrrr)rPrtrpolling_threads r! _subscribers HH1 H%- H#5)U]D,@,@AN  $ $T * * *  " " " EM  . 5 5x6F G G G G! He&8&D EH; / / /  D$8$8 8  . 5 55-.      D$8$8 8  . 5 5x6F G G G%HHHHHHHHHHHHHHHHHHsD#D88D<?D<c|j5t|jD]*\}\}}||kr|j|n+ddddS#1swxYwYdSr)r enumeraterpop)rPrtindexsubscribed_callback_unused_connectivitys r! _unsubscribers BK  .C C    >E>')=...266u===/ sAAAA base_optionsr~ctj|}t||ztjjt ffzSr)rcreate_channel_optionrdr ChannelArgKeyprimary_user_agent_string _USER_AGENT)rr~compression_options r!_augment_optionsrsJ&;KHH l  $>    r#optionscg}g}|D]M}|dtjjjkr||8||N||fS)z;Separates core channel options from Python channel options.r)rIrChannelOptionsSingleThreadedUnaryStreamr)r core_optionspython_optionspairs r!_separate_channel_optionsrswLN&& G /I J J  ! !$ ' ' ' '    % % % % < ''r#c eZdZUdZeed<ejed<eed<e ed<e ed<e e e fed<de d e ed eejd eejfd Zd e de fdZde eddfdZ d&deejgdfdeeddfdZdeejgdfddfdZ d'd e deedeedeedejf dZ d'd e deedeedeedejf dZ d'd e deedeedeedej f dZ! d'd e deedeedeedej"f dZ#d(dZ$d(d Z%d(d!Z&d"Z'd#Z(d(d$Z)d%Z*dS))rz7A cygrpc.Channel-backed implementation of grpc.Channel._single_threaded_unary_streamrn _call_state_connectivity_staterq_registered_call_handlesr8rrr~ct|\}}t|_||t jt j|t||||_ ||_ t|j |_ t|j |_t j|tjrt jdSdS)aPConstructor. Args: target: The target to which to connect. options: Configuration options for the channel. credentials: A cygrpc.ChannelCredentials or None. compression: An optional value indicating the compression method to be used over the lifetime of the channel. N)r%_DEFAULT_SINGLE_THREADED_UNARY_STREAMr!_process_python_optionsrrr encoderrnrqrr"rr#fork_register_channelg_gevent_activatedgevent_increment_channel_count)r?r8rrr~rrs r!r@zChannel.__init__s (A'I'I$ 1 * $$^444 N6 " " \; 7 7     ,T];;# > N6 " " N4< ( (  ! #   r#c pd}|r||}|jrBt|jt j|t j|j|||St|jt|j t j|t j|j|||Sr) r.r!rrnr r(rqrrr"r6s r! unary_streamzChannel.unary_streamIs#'  O&*&F&Fv&N&N #  - : v&&t|,,"%'  ) M ,T-= > > N6 " " N4< ( (  ! #   r#c d}|r||}t|jt|jt j|t j|j|||Sr)r.rrnrr"r r(rqr6s r! stream_unaryzChannel.stream_unaryksq#'  O&*&F&Fv&N&N #( M ,T-= > > N6 " " N4< ( (  ! #   r#c d}|r||}t|jt|jt j|t j|j|||Sr)r.rrnrr"r r(rqr6s r! stream_streamzChannel.stream_streamsq#'  O&*&F&Fv&N&N #) M ,T-= > > N6 " " N4< ( (  ! #   r#cp|j}|r,|j5|jdd=ddddS#1swxYwYdSdSr)r#rrrs r!_unsubscribe_allzChannel._unsubscribe_alls(  : : :6qqq9 : : : : : : : : : : : : : : : : : : : :s )--c||jtjjdtj|tjrtjdSdS)NzChannel closed!) r?rnrrrJr2fork_unregister_channelr*gevent_decrement_channel_countrBs r!_closezChannel._closesn  F-79JKKK&t,,,  $ 4  1 3 3 3 3 3 4 4r#c||jtjjddS)NzChannel closed due to fork)r?rn close_on_forkrrJr2rBs r!_close_on_forkzChannel._close_on_forksD  ##   ')E     r#c|SrrOrBs r! __enter__zChannel.__enter__rr#c.|dSr:rC)r?exc_typeexc_valexc_tbs r!__exit__zChannel.__exit__s ur#c.|dSrrJrBs r!rz Channel.closes r#c@ |dS#YdSxYwr)r?rBs r!rzChannel.__del__s1   ! ! # # # # #  DDsr)NNFr)+rDrErFrrLrGrrrrrKrrMr rrrIChannelCredentialsrr@r.r'rrr1r3rrUnaryUnaryMultiCallabler7UnaryStreamMultiCallabler9StreamUnaryMultiCallabler;StreamStreamMultiCallabler=r?rCrFrHrNrrrOr#r!rrsAA#''''n""""2222 LLL"38n,,,44-.4d56 4 d./ 4444BP#P#PPPP :&':; :  : : : :*.GGD45t;<G!G  GGGG9 $":!;T!AB9 9999=AAE-2    %%89  ((=>  %TN   %     0=AAE-2    %%89  ((=>  %TN   &     J=AAE-2    %%89  ((=>  %TN   &     0=AAE-2    %%89  ((=>  %TN   '     (:::: 4444    r#r)urrrloggingosrr;rrtypingrrrrrrr r r r rIr rrr grpc._cythonr grpc._typingrrrrrrrrgrpc.experimental getLoggerrDror' __version__rrgetenvr&rHsend_initial_metadatarrrZr[r_rrrrrrrrNr"rJrKr(objectr*rSr4rjrwrrrrrrrr RpcContextrrr6rrSrLrWrMrr_rerkrRrmrSrrrTrrUrrrrrrrrrrrrrrrrrrOr#r!rbsY 54                            !!!!!!,,,,,,............%%%%%%,,,,,,%%%%%%,,,,,,  ' H % %%%&6&BCC  BI122$>&  . % / 1 ( 1  . % / 1 1  . 1 ( 1  . 1 171 K >x>8E?>>>>!$/2=Ec]:/:/:/:/:/:/:/:/z%)%4?%S%T%%%%)  ) )$$9:)  ))))X -56K-L 0[[ [ %v'<< =[, [ G$ [  [[[[| # )     "[[[[[ ty$+[[[|e3e3e3e3e3$-e3e3e3PTBTBTBTBTBDKTBTBTBnsssssDKsssl. . e_.,. 8E?HUOXdm-D DE ....( #  #   # #uo #  <|TY67 78 # # # # |$ >A  hv'()     |$ >A  eHV-.0AABC    /x/8E?////pppppt;pppfa a a a a d.Ka a a H\\\\\ =\\\~g g g g g  =g g g T[ [ [ [ [ !?[ [ [ |C.. $5 $    &=,=====@        D $ $ $ (D,-t3 45 $ $ $ $ $2 $*B)CT)I JK 2 $$":!;T!ABC $.: $.: \.:!.: .:.:.:.:bH $H01478HH HHHH4  $ 01478      ./$*+!""( ) *( 8' ((3F*G GH(((("_____dl_____r#