a Kf@sdZddlZddlZddlZddlZddlmZmZmZm Z ddl Z ddl m Z ddl m Z eeZdZGddded d e jZGd d d e jZGd dde jZe jedddZeeedddZdS)z#Internal utilities for gRPC Python.N)CallableDictOptionalSequence)_common)DoneCallbackTypez6Exception calling connectivity future "done" callback!c@s eZdZdS)RpcMethodHandlerN)__name__ __module__ __qualname__r r s/sparta/input/_build_configuration/image_build+validate/lib/bmcenv/lib64/python3.9/site-packages/grpc/_utilities.pyr!sr_RpcMethodHandler)request_streamingresponse_streamingrequest_deserializerresponse_serializer unary_unary unary_stream stream_unary stream_streamc@sheZdZUeed<eeejfed<eeeejfdddZedddZ ej e ejd d d Z d S) DictionaryGenericHandler_name_method_handlers)servicemethod_handlerscs"|_fdd|D|_dS)Ncsi|]\}}t||qSr )rfully_qualified_method).0methodmethod_handlerrr r <sz5DictionaryGenericHandler.__init__..)ritemsr)selfrrr r r __init__8s z!DictionaryGenericHandler.__init__returncCs|jSN)rr#r r r service_nameAsz%DictionaryGenericHandler.service_name)handler_call_detailsr&cCs|j}|j|Sr')rrget)r#r*details_methodr r r rDsz DictionaryGenericHandler.serviceN) r r r str__annotations__rgrpcrr$r)HandlerCallDetailsrrr r r r r4s  rc@seZdZUejed<ejed<eed<eed<e e ed<ejdddZ e e d d d d Ze ejd d ddZedddZedddZedddZedddZd&e e d d ddZd'e e d d ddZd(e e d d ddZedd d!Zd"d#Zd$d%Zd S))_ChannelReadyFuture _condition_channel_matured _cancelled_done_callbacks)channelcCs&t|_||_d|_d|_g|_dS)NF) threading Conditionr2r3r4r5r6)r#r7r r r r$Ts  z_ChannelReadyFuture.__init__N)timeoutr&cCs|dur dn t|}|jx|jr0tq |jrFWddS|durZ|jq |t}|dkrxtq |jj|dq Wdn1s0YdS)Nr)r:)timer2r5r/FutureCancelledErrorr4waitFutureTimeoutError)r#r:until remainingr r r _block\s    z_ChannelReadyFuture._block) connectivityr&c Cs|jb|jsJ|tjjurJd|_|j|j|j t |j }d|_ nWddSWdn1sn0Y|D].}z ||Wq|t yt tYq|0q|dS)NT)r2r5r/ChannelConnectivityREADYr4r3 unsubscribe_update notify_alltupler6 Exception_LOGGER exception$_DONE_CALLBACK_EXCEPTION_LOG_MESSAGE)r#rBdone_callbacks done_callbackr r r rFns    .  z_ChannelReadyFuture._updater%c Cs|jV|js>d|_|j|j|jt|j}d|_nWddSWdn1sb0Y|D].}z ||Wqpt yt t Yqp0qpdS)NTF) r2r4r5r3rErFrGrHr6rIrJrKrL)r#rMrNr r r cancels  .  z_ChannelReadyFuture.cancelcCs0|j|jWdS1s"0YdSr')r2r5r(r r r cancelledsz_ChannelReadyFuture.cancelledcCs:|j |j o|j WdS1s,0YdSr'r2r5r4r(r r r runningsz_ChannelReadyFuture.runningcCs6|j|jp|jWdS1s(0YdSr'rQr(r r r donesz_ChannelReadyFuture.donecCs||dSr'rAr#r:r r r resultsz_ChannelReadyFuture.resultcCs||dSr'rTrUr r r rKsz_ChannelReadyFuture.exceptioncCs||dSr'rTrUr r r tracebacksz_ChannelReadyFuture.traceback)fncCsZ|j8|js0|js0|j|WddSWdn1sD0Y||dSr')r2r5r4r6append)r#rXr r r add_done_callbacks   .z%_ChannelReadyFuture.add_done_callbackcCs<|j"|jj|jddWdn1s.0YdS)NT)try_to_connect)r2r3 subscriberFr(r r r startsz_ChannelReadyFuture.startcCsD|j*|js"|js"|j|jWdn1s60YdSr')r2r5r4r3rErFr(r r r __del__s z_ChannelReadyFuture.__del__)N)N)N)r r r r8r9r.r/Channelboolrrr$rfloatrArCrFrOrPrRrSrVrKrWrrZr]r^r r r r r1Ms$    r1)r7r&cCst|}||Sr')r1r])r7 ready_futurer r r channel_ready_futuresrc)version1version2r&cCs|d}|d}zRtdD]D}t||t||krBWdSt||t||krWdSqWntyzYdS0t|t|kS)a Compares two versions in the format '1.60.1' or '1.60.1.dev0'. This method will be used in all stubs generated by grpcio-tools to check whether the stub version is compatible with the runtime grpcio. Args: version1: The first version string. version2: The second version string. Returns: True if version1 is lower, False otherwise. .TF)splitrangeint ValueErrorlen)rdre version1_list version2_listir r r first_version_is_lowers    rp)__doc__ collectionsloggingr8r;typingrrrrr/r grpc._typingr getLoggerr rJrL namedtuplerServiceRpcHandlerrFuturer1r_rcr-r`rpr r r r s,     o