| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469 | 
<!DOCTYPE html><!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--><!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--><head>  <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>grpc — grpcio 0.15.0 documentation</title>                          <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />          <link rel="top" title="grpcio 0.15.0 documentation" href="../index.html"/>        <link rel="up" title="Module code" href="index.html"/>     <script src="../_static/js/modernizr.min.js"></script></head><body class="wy-body-for-nav" role="document">     <div class="wy-grid-for-nav">        <nav data-toggle="wy-nav-shift" class="wy-nav-side">      <div class="wy-side-scroll">        <div class="wy-side-nav-search">                                <a href="../index.html" class="icon icon-home"> grpcio                              </a>                                                <div class="version">                0.15.0              </div>                                <div role="search">  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">    <input type="text" name="q" placeholder="Search docs" />    <input type="hidden" name="check_keywords" value="yes" />    <input type="hidden" name="area" value="default" />  </form></div>                  </div>        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">                                                  <ul><li class="toctree-l1"><a class="reference internal" href="../grpc.html">grpc package</a></li></ul>                              </div>      </div>    </nav>    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">            <nav class="wy-nav-top" role="navigation" aria-label="top navigation">        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>        <a href="../index.html">grpcio</a>      </nav>            <div class="wy-nav-content">        <div class="rst-content">          <div role="navigation" aria-label="breadcrumbs navigation">  <ul class="wy-breadcrumbs">    <li><a href="../index.html">Docs</a> »</li>              <li><a href="index.html">Module code</a> »</li>          <li>grpc</li>    <li class="wy-breadcrumbs-aside">                          </li>  </ul>  <hr/></div>          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">           <div itemprop="articleBody">              <h1>Source code for grpc</h1><div class="highlight"><pre><span></span><span class="c1"># Copyright 2015-2016, Google Inc.</span><span class="c1"># All rights reserved.</span><span class="c1">#</span><span class="c1"># Redistribution and use in source and binary forms, with or without</span><span class="c1"># modification, are permitted provided that the following conditions are</span><span class="c1"># met:</span><span class="c1">#</span><span class="c1">#     * Redistributions of source code must retain the above copyright</span><span class="c1"># notice, this list of conditions and the following disclaimer.</span><span class="c1">#     * Redistributions in binary form must reproduce the above</span><span class="c1"># copyright notice, this list of conditions and the following disclaimer</span><span class="c1"># in the documentation and/or other materials provided with the</span><span class="c1"># distribution.</span><span class="c1">#     * Neither the name of Google Inc. nor the names of its</span><span class="c1"># contributors may be used to endorse or promote products derived from</span><span class="c1"># this software without specific prior written permission.</span><span class="c1">#</span><span class="c1"># THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span><span class="c1"># "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span><span class="c1"># LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span><span class="c1"># A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span><span class="c1"># OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span><span class="c1"># SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span><span class="c1"># LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span><span class="c1"># DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span><span class="c1"># THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span><span class="c1"># (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span><span class="c1"># OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span><span class="sd">"""gRPC's Python API."""</span><span class="kn">import</span> <span class="nn">abc</span><span class="kn">import</span> <span class="nn">enum</span><span class="kn">import</span> <span class="nn">six</span><span class="kn">from</span> <span class="nn">grpc._cython</span> <span class="kn">import</span> <span class="n">cygrpc</span> <span class="k">as</span> <span class="n">_cygrpc</span><span class="c1">############################## Future Interface  ###############################</span><div class="viewcode-block" id="FutureTimeoutError"><a class="viewcode-back" href="../grpc.html#grpc.FutureTimeoutError">[docs]</a><span class="k">class</span> <span class="nc">FutureTimeoutError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>  <span class="sd">"""Indicates that a method call on a Future timed out."""</span></div><div class="viewcode-block" id="FutureCancelledError"><a class="viewcode-back" href="../grpc.html#grpc.FutureCancelledError">[docs]</a><span class="k">class</span> <span class="nc">FutureCancelledError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>  <span class="sd">"""Indicates that the computation underlying a Future was cancelled."""</span></div><div class="viewcode-block" id="Future"><a class="viewcode-back" href="../grpc.html#grpc.Future">[docs]</a><span class="k">class</span> <span class="nc">Future</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""A representation of a computation in another control flow.</span><span class="sd">  Computations represented by a Future may be yet to be begun, may be ongoing,</span><span class="sd">  or may have already completed.</span><span class="sd">  """</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.cancel"><a class="viewcode-back" href="../grpc.html#grpc.Future.cancel">[docs]</a>  <span class="k">def</span> <span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Attempts to cancel the computation.</span><span class="sd">    This method does not block.</span><span class="sd">    Returns:</span><span class="sd">      True if the computation has not yet begun, will not be allowed to take</span><span class="sd">        place, and determination of both was possible without blocking. False</span><span class="sd">        under all other circumstances including but not limited to the</span><span class="sd">        computation's already having begun, the computation's already having</span><span class="sd">        finished, and the computation's having been scheduled for execution on a</span><span class="sd">        remote system for which a determination of whether or not it commenced</span><span class="sd">        before being cancelled cannot be made without blocking.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.cancelled"><a class="viewcode-back" href="../grpc.html#grpc.Future.cancelled">[docs]</a>  <span class="k">def</span> <span class="nf">cancelled</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Describes whether the computation was cancelled.</span><span class="sd">    This method does not block.</span><span class="sd">    Returns:</span><span class="sd">      True if the computation was cancelled any time before its result became</span><span class="sd">        immediately available. False under all other circumstances including but</span><span class="sd">        not limited to this object's cancel method not having been called and</span><span class="sd">        the computation's result having become immediately available.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.running"><a class="viewcode-back" href="../grpc.html#grpc.Future.running">[docs]</a>  <span class="k">def</span> <span class="nf">running</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Describes whether the computation is taking place.</span><span class="sd">    This method does not block.</span><span class="sd">    Returns:</span><span class="sd">      True if the computation is scheduled to take place in the future or is</span><span class="sd">        taking place now, or False if the computation took place in the past or</span><span class="sd">        was cancelled.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.done"><a class="viewcode-back" href="../grpc.html#grpc.Future.done">[docs]</a>  <span class="k">def</span> <span class="nf">done</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Describes whether the computation has taken place.</span><span class="sd">    This method does not block.</span><span class="sd">    Returns:</span><span class="sd">      True if the computation is known to have either completed or have been</span><span class="sd">        unscheduled or interrupted. False if the computation may possibly be</span><span class="sd">        executing or scheduled to execute later.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.result"><a class="viewcode-back" href="../grpc.html#grpc.Future.result">[docs]</a>  <span class="k">def</span> <span class="nf">result</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Accesses the outcome of the computation or raises its exception.</span><span class="sd">    This method may return immediately or may block.</span><span class="sd">    Args:</span><span class="sd">      timeout: The length of time in seconds to wait for the computation to</span><span class="sd">        finish or be cancelled, or None if this method should block until the</span><span class="sd">        computation has finished or is cancelled no matter how long that takes.</span><span class="sd">    Returns:</span><span class="sd">      The return value of the computation.</span><span class="sd">    Raises:</span><span class="sd">      FutureTimeoutError: If a timeout value is passed and the computation does</span><span class="sd">        not terminate within the allotted time.</span><span class="sd">      FutureCancelledError: If the computation was cancelled.</span><span class="sd">      Exception: If the computation raised an exception, this call will raise</span><span class="sd">        the same exception.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.exception"><a class="viewcode-back" href="../grpc.html#grpc.Future.exception">[docs]</a>  <span class="k">def</span> <span class="nf">exception</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Return the exception raised by the computation.</span><span class="sd">    This method may return immediately or may block.</span><span class="sd">    Args:</span><span class="sd">      timeout: The length of time in seconds to wait for the computation to</span><span class="sd">        terminate or be cancelled, or None if this method should block until</span><span class="sd">        the computation is terminated or is cancelled no matter how long that</span><span class="sd">        takes.</span><span class="sd">    Returns:</span><span class="sd">      The exception raised by the computation, or None if the computation did</span><span class="sd">        not raise an exception.</span><span class="sd">    Raises:</span><span class="sd">      FutureTimeoutError: If a timeout value is passed and the computation does</span><span class="sd">        not terminate within the allotted time.</span><span class="sd">      FutureCancelledError: If the computation was cancelled.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.traceback"><a class="viewcode-back" href="../grpc.html#grpc.Future.traceback">[docs]</a>  <span class="k">def</span> <span class="nf">traceback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Access the traceback of the exception raised by the computation.</span><span class="sd">    This method may return immediately or may block.</span><span class="sd">    Args:</span><span class="sd">      timeout: The length of time in seconds to wait for the computation to</span><span class="sd">        terminate or be cancelled, or None if this method should block until</span><span class="sd">        the computation is terminated or is cancelled no matter how long that</span><span class="sd">        takes.</span><span class="sd">    Returns:</span><span class="sd">      The traceback of the exception raised by the computation, or None if the</span><span class="sd">        computation did not raise an exception.</span><span class="sd">    Raises:</span><span class="sd">      FutureTimeoutError: If a timeout value is passed and the computation does</span><span class="sd">        not terminate within the allotted time.</span><span class="sd">      FutureCancelledError: If the computation was cancelled.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Future.add_done_callback"><a class="viewcode-back" href="../grpc.html#grpc.Future.add_done_callback">[docs]</a>  <span class="k">def</span> <span class="nf">add_done_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fn</span><span class="p">):</span>    <span class="sd">"""Adds a function to be called at completion of the computation.</span><span class="sd">    The callback will be passed this Future object describing the outcome of</span><span class="sd">    the computation.</span><span class="sd">    If the computation has already completed, the callback will be called</span><span class="sd">    immediately.</span><span class="sd">    Args:</span><span class="sd">      fn: A callable taking this Future object as its single parameter.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><span class="c1">################################  gRPC Enums  ##################################</span><span class="nd">@enum.unique</span><div class="viewcode-block" id="ChannelConnectivity"><a class="viewcode-back" href="../grpc.html#grpc.ChannelConnectivity">[docs]</a><span class="k">class</span> <span class="nc">ChannelConnectivity</span><span class="p">(</span><span class="n">enum</span><span class="o">.</span><span class="n">Enum</span><span class="p">):</span>  <span class="sd">"""Mirrors grpc_connectivity_state in the gRPC Core.</span><span class="sd">  Attributes:</span><span class="sd">    IDLE: The channel is idle.</span><span class="sd">    CONNECTING: The channel is connecting.</span><span class="sd">    READY: The channel is ready to conduct RPCs.</span><span class="sd">    TRANSIENT_FAILURE: The channel has seen a failure from which it expects to</span><span class="sd">      recover.</span><span class="sd">    SHUTDOWN: The channel has seen a failure from which it cannot recover.</span><span class="sd">  """</span>  <span class="n">IDLE</span>              <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">idle</span><span class="p">,</span> <span class="s1">'idle'</span><span class="p">)</span>  <span class="n">CONNECTING</span>        <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">connecting</span><span class="p">,</span> <span class="s1">'connecting'</span><span class="p">)</span>  <span class="n">READY</span>             <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">ready</span><span class="p">,</span> <span class="s1">'ready'</span><span class="p">)</span>  <span class="n">TRANSIENT_FAILURE</span> <span class="o">=</span> <span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">transient_failure</span><span class="p">,</span> <span class="s1">'transient failure'</span><span class="p">)</span>  <span class="n">SHUTDOWN</span>          <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">ConnectivityState</span><span class="o">.</span><span class="n">shutdown</span><span class="p">,</span> <span class="s1">'shutdown'</span><span class="p">)</span></div><span class="nd">@enum.unique</span><div class="viewcode-block" id="StatusCode"><a class="viewcode-back" href="../grpc.html#grpc.StatusCode">[docs]</a><span class="k">class</span> <span class="nc">StatusCode</span><span class="p">(</span><span class="n">enum</span><span class="o">.</span><span class="n">Enum</span><span class="p">):</span>  <span class="sd">"""Mirrors grpc_status_code in the gRPC Core."""</span>  <span class="n">OK</span>                  <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">ok</span><span class="p">,</span> <span class="s1">'ok'</span><span class="p">)</span>  <span class="n">CANCELLED</span>           <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">cancelled</span><span class="p">,</span> <span class="s1">'cancelled'</span><span class="p">)</span>  <span class="n">UNKNOWN</span>             <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unknown</span><span class="p">,</span> <span class="s1">'unknown'</span><span class="p">)</span>  <span class="n">INVALID_ARGUMENT</span>    <span class="o">=</span> <span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">invalid_argument</span><span class="p">,</span> <span class="s1">'invalid argument'</span><span class="p">)</span>  <span class="n">DEADLINE_EXCEEDED</span>   <span class="o">=</span> <span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">deadline_exceeded</span><span class="p">,</span> <span class="s1">'deadline exceeded'</span><span class="p">)</span>  <span class="n">NOT_FOUND</span>           <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">not_found</span><span class="p">,</span> <span class="s1">'not found'</span><span class="p">)</span>  <span class="n">ALREADY_EXISTS</span>      <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">already_exists</span><span class="p">,</span> <span class="s1">'already exists'</span><span class="p">)</span>  <span class="n">PERMISSION_DENIED</span>   <span class="o">=</span> <span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">permission_denied</span><span class="p">,</span> <span class="s1">'permission denied'</span><span class="p">)</span>  <span class="n">RESOURCE_EXHAUSTED</span>  <span class="o">=</span> <span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">resource_exhausted</span><span class="p">,</span> <span class="s1">'resource exhausted'</span><span class="p">)</span>  <span class="n">FAILED_PRECONDITION</span> <span class="o">=</span> <span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">failed_precondition</span><span class="p">,</span> <span class="s1">'failed precondition'</span><span class="p">)</span>  <span class="n">ABORTED</span>             <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">aborted</span><span class="p">,</span> <span class="s1">'aborted'</span><span class="p">)</span>  <span class="n">OUT_OF_RANGE</span>        <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">out_of_range</span><span class="p">,</span> <span class="s1">'out of range'</span><span class="p">)</span>  <span class="n">UNIMPLEMENTED</span>       <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unimplemented</span><span class="p">,</span> <span class="s1">'unimplemented'</span><span class="p">)</span>  <span class="n">INTERNAL</span>            <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">internal</span><span class="p">,</span> <span class="s1">'internal'</span><span class="p">)</span>  <span class="n">UNAVAILABLE</span>         <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unavailable</span><span class="p">,</span> <span class="s1">'unavailable'</span><span class="p">)</span>  <span class="n">DATA_LOSS</span>           <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">data_loss</span><span class="p">,</span> <span class="s1">'data loss'</span><span class="p">)</span>  <span class="n">UNAUTHENTICATED</span>     <span class="o">=</span> <span class="p">(</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">StatusCode</span><span class="o">.</span><span class="n">unauthenticated</span><span class="p">,</span> <span class="s1">'unauthenticated'</span><span class="p">)</span></div><span class="c1">#############################  gRPC Exceptions  ################################</span><div class="viewcode-block" id="RpcError"><a class="viewcode-back" href="../grpc.html#grpc.RpcError">[docs]</a><span class="k">class</span> <span class="nc">RpcError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>  <span class="sd">"""Raised by the gRPC library to indicate non-OK-status RPC termination."""</span></div><span class="c1">##############################  Shared Context  ################################</span><div class="viewcode-block" id="RpcContext"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext">[docs]</a><span class="k">class</span> <span class="nc">RpcContext</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Provides RPC-related information and action."""</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="RpcContext.is_active"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.is_active">[docs]</a>  <span class="k">def</span> <span class="nf">is_active</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Describes whether the RPC is active or has terminated."""</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="RpcContext.time_remaining"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.time_remaining">[docs]</a>  <span class="k">def</span> <span class="nf">time_remaining</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Describes the length of allowed time remaining for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      A nonnegative float indicating the length of allowed time in seconds</span><span class="sd">      remaining for the RPC to complete before it is considered to have timed</span><span class="sd">      out, or None if no deadline was specified for the RPC.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="RpcContext.cancel"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.cancel">[docs]</a>  <span class="k">def</span> <span class="nf">cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Cancels the RPC.</span><span class="sd">    Idempotent and has no effect if the RPC has already terminated.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="RpcContext.add_callback"><a class="viewcode-back" href="../grpc.html#grpc.RpcContext.add_callback">[docs]</a>  <span class="k">def</span> <span class="nf">add_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>    <span class="sd">"""Registers a callback to be called on RPC termination.</span><span class="sd">    Args:</span><span class="sd">      callback: A no-parameter callable to be called on RPC termination.</span><span class="sd">    Returns:</span><span class="sd">      True if the callback was added and will be called later; False if the</span><span class="sd">        callback was not added and will not later be called (because the RPC</span><span class="sd">        already terminated or some other reason).</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><span class="c1">#########################  Invocation-Side Context  ############################</span><div class="viewcode-block" id="Call"><a class="viewcode-back" href="../grpc.html#grpc.Call">[docs]</a><span class="k">class</span> <span class="nc">Call</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">,</span> <span class="n">RpcContext</span><span class="p">)):</span>  <span class="sd">"""Invocation-side utility object for an RPC."""</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Call.initial_metadata"><a class="viewcode-back" href="../grpc.html#grpc.Call.initial_metadata">[docs]</a>  <span class="k">def</span> <span class="nf">initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Accesses the initial metadata from the service-side of the RPC.</span><span class="sd">    This method blocks until the value is available.</span><span class="sd">    Returns:</span><span class="sd">      The initial metadata as a sequence of pairs of bytes.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Call.trailing_metadata"><a class="viewcode-back" href="../grpc.html#grpc.Call.trailing_metadata">[docs]</a>  <span class="k">def</span> <span class="nf">trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Accesses the trailing metadata from the service-side of the RPC.</span><span class="sd">    This method blocks until the value is available.</span><span class="sd">    Returns:</span><span class="sd">      The trailing metadata as a sequence of pairs of bytes.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Call.code"><a class="viewcode-back" href="../grpc.html#grpc.Call.code">[docs]</a>  <span class="k">def</span> <span class="nf">code</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Accesses the status code emitted by the service-side of the RPC.</span><span class="sd">    This method blocks until the value is available.</span><span class="sd">    Returns:</span><span class="sd">      The StatusCode value for the RPC.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Call.details"><a class="viewcode-back" href="../grpc.html#grpc.Call.details">[docs]</a>  <span class="k">def</span> <span class="nf">details</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Accesses the details value emitted by the service-side of the RPC.</span><span class="sd">    This method blocks until the value is available.</span><span class="sd">    Returns:</span><span class="sd">      The bytes of the details of the RPC.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><span class="c1">############  Authentication & Authorization Interfaces & Classes  #############</span><div class="viewcode-block" id="ChannelCredentials"><a class="viewcode-back" href="../grpc.html#grpc.ChannelCredentials">[docs]</a><span class="k">class</span> <span class="nc">ChannelCredentials</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>  <span class="sd">"""A value encapsulating the data required to create a secure Channel.</span><span class="sd">  This class has no supported interface - it exists to define the type of its</span><span class="sd">  instances and its instances exist to be passed to other functions.</span><span class="sd">  """</span>  <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">credentials</span><span class="p">):</span>    <span class="bp">self</span><span class="o">.</span><span class="n">_credentials</span> <span class="o">=</span> <span class="n">credentials</span></div><div class="viewcode-block" id="CallCredentials"><a class="viewcode-back" href="../grpc.html#grpc.CallCredentials">[docs]</a><span class="k">class</span> <span class="nc">CallCredentials</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>  <span class="sd">"""A value encapsulating data asserting an identity over a channel.</span><span class="sd">  A CallCredentials may be composed with ChannelCredentials to always assert</span><span class="sd">  identity for every call over that Channel.</span><span class="sd">  This class has no supported interface - it exists to define the type of its</span><span class="sd">  instances and its instances exist to be passed to other functions.</span><span class="sd">  """</span>  <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">credentials</span><span class="p">):</span>    <span class="bp">self</span><span class="o">.</span><span class="n">_credentials</span> <span class="o">=</span> <span class="n">credentials</span></div><div class="viewcode-block" id="AuthMetadataContext"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataContext">[docs]</a><span class="k">class</span> <span class="nc">AuthMetadataContext</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Provides information to call credentials metadata plugins.</span><span class="sd">  Attributes:</span><span class="sd">    service_url: A string URL of the service being called into.</span><span class="sd">    method_name: A string of the fully qualified method name being called.</span><span class="sd">  """</span></div><div class="viewcode-block" id="AuthMetadataPluginCallback"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataPluginCallback">[docs]</a><span class="k">class</span> <span class="nc">AuthMetadataPluginCallback</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Callback object received by a metadata plugin."""</span>  <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">metadata</span><span class="p">,</span> <span class="n">error</span><span class="p">):</span>    <span class="sd">"""Inform the gRPC runtime of the metadata to construct a CallCredentials.</span><span class="sd">    Args:</span><span class="sd">      metadata: An iterable of 2-sequences (e.g. tuples) of metadata key/value</span><span class="sd">        pairs.</span><span class="sd">      error: An Exception to indicate error or None to indicate success.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class="viewcode-block" id="AuthMetadataPlugin"><a class="viewcode-back" href="../grpc.html#grpc.AuthMetadataPlugin">[docs]</a><span class="k">class</span> <span class="nc">AuthMetadataPlugin</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""A specification for custom authentication."""</span>  <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>    <span class="sd">"""Implements authentication by passing metadata to a callback.</span><span class="sd">    Implementations of this method must not block.</span><span class="sd">    Args:</span><span class="sd">      context: An AuthMetadataContext providing information on the RPC that the</span><span class="sd">        plugin is being called to authenticate.</span><span class="sd">      callback: An AuthMetadataPluginCallback to be invoked either synchronously</span><span class="sd">        or asynchronously.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class="viewcode-block" id="ServerCredentials"><a class="viewcode-back" href="../grpc.html#grpc.ServerCredentials">[docs]</a><span class="k">class</span> <span class="nc">ServerCredentials</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>  <span class="sd">"""A value encapsulating the data required to open a secure port on a Server.</span><span class="sd">  This class has no supported interface - it exists to define the type of its</span><span class="sd">  instances and its instances exist to be passed to other functions.</span><span class="sd">  """</span>  <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">credentials</span><span class="p">):</span>    <span class="bp">self</span><span class="o">.</span><span class="n">_credentials</span> <span class="o">=</span> <span class="n">credentials</span></div><span class="c1">########################  Multi-Callable Interfaces  ###########################</span><div class="viewcode-block" id="UnaryUnaryMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.UnaryUnaryMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">UnaryUnaryMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Affords invoking a unary-unary RPC."""</span>  <span class="nd">@abc.abstractmethod</span>  <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Synchronously invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request: The request value for the RPC.</span><span class="sd">      timeout: An optional duration of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      The response value for the RPC.</span><span class="sd">    Raises:</span><span class="sd">      RpcError: Indicating that the RPC terminated with non-OK status. The</span><span class="sd">        raised RpcError will also be a Call for the RPC affording the RPC's</span><span class="sd">        metadata, status code, and details.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="UnaryUnaryMultiCallable.with_call"><a class="viewcode-back" href="../grpc.html#grpc.UnaryUnaryMultiCallable.with_call">[docs]</a>  <span class="k">def</span> <span class="nf">with_call</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Synchronously invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request: The request value for the RPC.</span><span class="sd">      timeout: An optional durating of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      The response value for the RPC and a Call value for the RPC.</span><span class="sd">    Raises:</span><span class="sd">      RpcError: Indicating that the RPC terminated with non-OK status. The</span><span class="sd">        raised RpcError will also be a Call for the RPC affording the RPC's</span><span class="sd">        metadata, status code, and details.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="UnaryUnaryMultiCallable.future"><a class="viewcode-back" href="../grpc.html#grpc.UnaryUnaryMultiCallable.future">[docs]</a>  <span class="k">def</span> <span class="nf">future</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Asynchronously invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request: The request value for the RPC.</span><span class="sd">      timeout: An optional duration of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      An object that is both a Call for the RPC and a Future. In the event of</span><span class="sd">        RPC completion, the return Future's result value will be the response</span><span class="sd">        message of the RPC. Should the event terminate with non-OK status, the</span><span class="sd">        returned Future's exception value will be an RpcError.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><div class="viewcode-block" id="UnaryStreamMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.UnaryStreamMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">UnaryStreamMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Affords invoking a unary-stream RPC."""</span>  <span class="nd">@abc.abstractmethod</span>  <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request: The request value for the RPC.</span><span class="sd">      timeout: An optional duration of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      An object that is both a Call for the RPC and an iterator of response</span><span class="sd">        values. Drawing response values from the returned iterator may raise</span><span class="sd">        RpcError indicating termination of the RPC with non-OK status.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><div class="viewcode-block" id="StreamUnaryMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.StreamUnaryMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">StreamUnaryMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Affords invoking a stream-unary RPC in any call style."""</span>  <span class="nd">@abc.abstractmethod</span>  <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Synchronously invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request_iterator: An iterator that yields request values for the RPC.</span><span class="sd">      timeout: An optional duration of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      The response value for the RPC, and a Call for the RPC if with_call was</span><span class="sd">        set to True at invocation.</span><span class="sd">    Raises:</span><span class="sd">      RpcError: Indicating that the RPC terminated with non-OK status. The</span><span class="sd">        raised RpcError will also be a Call for the RPC affording the RPC's</span><span class="sd">        metadata, status code, and details.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="StreamUnaryMultiCallable.with_call"><a class="viewcode-back" href="../grpc.html#grpc.StreamUnaryMultiCallable.with_call">[docs]</a>  <span class="k">def</span> <span class="nf">with_call</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Synchronously invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request_iterator: An iterator that yields request values for the RPC.</span><span class="sd">      timeout: An optional duration of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      The response value for the RPC and a Call for the RPC.</span><span class="sd">    Raises:</span><span class="sd">      RpcError: Indicating that the RPC terminated with non-OK status. The</span><span class="sd">        raised RpcError will also be a Call for the RPC affording the RPC's</span><span class="sd">        metadata, status code, and details.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="StreamUnaryMultiCallable.future"><a class="viewcode-back" href="../grpc.html#grpc.StreamUnaryMultiCallable.future">[docs]</a>  <span class="k">def</span> <span class="nf">future</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Asynchronously invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request_iterator: An iterator that yields request values for the RPC.</span><span class="sd">      timeout: An optional duration of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      An object that is both a Call for the RPC and a Future. In the event of</span><span class="sd">        RPC completion, the return Future's result value will be the response</span><span class="sd">        message of the RPC. Should the event terminate with non-OK status, the</span><span class="sd">        returned Future's exception value will be an RpcError.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><div class="viewcode-block" id="StreamStreamMultiCallable"><a class="viewcode-back" href="../grpc.html#grpc.StreamStreamMultiCallable">[docs]</a><span class="k">class</span> <span class="nc">StreamStreamMultiCallable</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Affords invoking a stream-stream RPC in any call style."""</span>  <span class="nd">@abc.abstractmethod</span>  <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">request_iterator</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">credentials</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Invokes the underlying RPC.</span><span class="sd">    Args:</span><span class="sd">      request_iterator: An iterator that yields request values for the RPC.</span><span class="sd">      timeout: An optional duration of time in seconds to allow for the RPC.</span><span class="sd">      metadata: An optional sequence of pairs of bytes to be transmitted to the</span><span class="sd">        service-side of the RPC.</span><span class="sd">      credentials: An optional CallCredentials for the RPC.</span><span class="sd">    Returns:</span><span class="sd">      An object that is both a Call for the RPC and an iterator of response</span><span class="sd">        values. Drawing response values from the returned iterator may raise</span><span class="sd">        RpcError indicating termination of the RPC with non-OK status.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div><span class="c1">#############################  Channel Interface  ##############################</span><div class="viewcode-block" id="Channel"><a class="viewcode-back" href="../grpc.html#grpc.Channel">[docs]</a><span class="k">class</span> <span class="nc">Channel</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Affords RPC invocation via generic methods."""</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Channel.subscribe"><a class="viewcode-back" href="../grpc.html#grpc.Channel.subscribe">[docs]</a>  <span class="k">def</span> <span class="nf">subscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">try_to_connect</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>    <span class="sd">"""Subscribes to this Channel's connectivity.</span><span class="sd">    Args:</span><span class="sd">      callback: A callable to be invoked and passed a ChannelConnectivity value</span><span class="sd">        describing this Channel's connectivity. The callable will be invoked</span><span class="sd">        immediately upon subscription and again for every change to this</span><span class="sd">        Channel's connectivity thereafter until it is unsubscribed or this</span><span class="sd">        Channel object goes out of scope.</span><span class="sd">      try_to_connect: A boolean indicating whether or not this Channel should</span><span class="sd">        attempt to connect if it is not already connected and ready to conduct</span><span class="sd">        RPCs.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Channel.unsubscribe"><a class="viewcode-back" href="../grpc.html#grpc.Channel.unsubscribe">[docs]</a>  <span class="k">def</span> <span class="nf">unsubscribe</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">):</span>    <span class="sd">"""Unsubscribes a callback from this Channel's connectivity.</span><span class="sd">    Args:</span><span class="sd">      callback: A callable previously registered with this Channel from having</span><span class="sd">        been passed to its "subscribe" method.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Channel.unary_unary"><a class="viewcode-back" href="../grpc.html#grpc.Channel.unary_unary">[docs]</a>  <span class="k">def</span> <span class="nf">unary_unary</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Creates a UnaryUnaryMultiCallable for a unary-unary method.</span><span class="sd">    Args:</span><span class="sd">      method: The name of the RPC method.</span><span class="sd">    Returns:</span><span class="sd">      A UnaryUnaryMultiCallable value for the named unary-unary method.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Channel.unary_stream"><a class="viewcode-back" href="../grpc.html#grpc.Channel.unary_stream">[docs]</a>  <span class="k">def</span> <span class="nf">unary_stream</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Creates a UnaryStreamMultiCallable for a unary-stream method.</span><span class="sd">    Args:</span><span class="sd">      method: The name of the RPC method.</span><span class="sd">    Returns:</span><span class="sd">      A UnaryStreamMultiCallable value for the name unary-stream method.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Channel.stream_unary"><a class="viewcode-back" href="../grpc.html#grpc.Channel.stream_unary">[docs]</a>  <span class="k">def</span> <span class="nf">stream_unary</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Creates a StreamUnaryMultiCallable for a stream-unary method.</span><span class="sd">    Args:</span><span class="sd">      method: The name of the RPC method.</span><span class="sd">    Returns:</span><span class="sd">      A StreamUnaryMultiCallable value for the named stream-unary method.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Channel.stream_stream"><a class="viewcode-back" href="../grpc.html#grpc.Channel.stream_stream">[docs]</a>  <span class="k">def</span> <span class="nf">stream_stream</span><span class="p">(</span>      <span class="bp">self</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="n">request_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>    <span class="sd">"""Creates a StreamStreamMultiCallable for a stream-stream method.</span><span class="sd">    Args:</span><span class="sd">      method: The name of the RPC method.</span><span class="sd">    Returns:</span><span class="sd">      A StreamStreamMultiCallable value for the named stream-stream method.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><span class="c1">##########################  Service-Side Context  ##############################</span><div class="viewcode-block" id="ServicerContext"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext">[docs]</a><span class="k">class</span> <span class="nc">ServicerContext</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">,</span> <span class="n">RpcContext</span><span class="p">)):</span>  <span class="sd">"""A context object passed to method implementations."""</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="ServicerContext.invocation_metadata"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.invocation_metadata">[docs]</a>  <span class="k">def</span> <span class="nf">invocation_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Accesses the metadata from the invocation-side of the RPC.</span><span class="sd">    Returns:</span><span class="sd">      The invocation metadata object as a sequence of pairs of bytes.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="ServicerContext.peer"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.peer">[docs]</a>  <span class="k">def</span> <span class="nf">peer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Identifies the peer that invoked the RPC being serviced.</span><span class="sd">    Returns:</span><span class="sd">      A string identifying the peer that invoked the RPC being serviced.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="ServicerContext.send_initial_metadata"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.send_initial_metadata">[docs]</a>  <span class="k">def</span> <span class="nf">send_initial_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">initial_metadata</span><span class="p">):</span>    <span class="sd">"""Sends the initial metadata value to the invocation-side of the RPC.</span><span class="sd">    This method need not be called by method implementations if they have no</span><span class="sd">    service-side initial metadata to transmit.</span><span class="sd">    Args:</span><span class="sd">      initial_metadata: The initial metadata of the RPC as a sequence of pairs</span><span class="sd">        of bytes.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="ServicerContext.set_trailing_metadata"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.set_trailing_metadata">[docs]</a>  <span class="k">def</span> <span class="nf">set_trailing_metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trailing_metadata</span><span class="p">):</span>    <span class="sd">"""Accepts the trailing metadata value of the RPC.</span><span class="sd">    This method need not be called by method implementations if they have no</span><span class="sd">    service-side trailing metadata to transmit.</span><span class="sd">    Args:</span><span class="sd">      trailing_metadata: The trailing metadata of the RPC as a sequence of pairs</span><span class="sd">        of bytes.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="ServicerContext.set_code"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.set_code">[docs]</a>  <span class="k">def</span> <span class="nf">set_code</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">code</span><span class="p">):</span>    <span class="sd">"""Accepts the status code of the RPC.</span><span class="sd">    This method need not be called by method implementations if they wish the</span><span class="sd">    gRPC runtime to determine the status code of the RPC.</span><span class="sd">    Args:</span><span class="sd">      code: The integer status code of the RPC to be transmitted to the</span><span class="sd">        invocation side of the RPC.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="ServicerContext.set_details"><a class="viewcode-back" href="../grpc.html#grpc.ServicerContext.set_details">[docs]</a>  <span class="k">def</span> <span class="nf">set_details</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">details</span><span class="p">):</span>    <span class="sd">"""Accepts the service-side details of the RPC.</span><span class="sd">    This method need not be called by method implementations if they have no</span><span class="sd">    details to transmit.</span><span class="sd">    Args:</span><span class="sd">      details: The details bytes of the RPC to be transmitted to</span><span class="sd">        the invocation side of the RPC.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><span class="c1">#####################  Service-Side Handler Interfaces  ########################</span><div class="viewcode-block" id="RpcMethodHandler"><a class="viewcode-back" href="../grpc.html#grpc.RpcMethodHandler">[docs]</a><span class="k">class</span> <span class="nc">RpcMethodHandler</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""An implementation of a single RPC method.</span><span class="sd">  Attributes:</span><span class="sd">    request_streaming: Whether the RPC supports exactly one request message or</span><span class="sd">      any arbitrary number of request messages.</span><span class="sd">    response_streaming: Whether the RPC supports exactly one response message or</span><span class="sd">      any arbitrary number of response messages.</span><span class="sd">    request_deserializer: A callable behavior that accepts a byte string and</span><span class="sd">      returns an object suitable to be passed to this object's business logic,</span><span class="sd">      or None to indicate that this object's business logic should be passed the</span><span class="sd">      raw request bytes.</span><span class="sd">    response_serializer: A callable behavior that accepts an object produced by</span><span class="sd">      this object's business logic and returns a byte string, or None to</span><span class="sd">      indicate that the byte strings produced by this object's business logic</span><span class="sd">      should be transmitted on the wire as they are.</span><span class="sd">    unary_unary: This object's application-specific business logic as a callable</span><span class="sd">      value that takes a request value and a ServicerContext object and returns</span><span class="sd">      a response value. Only non-None if both request_streaming and</span><span class="sd">      response_streaming are False.</span><span class="sd">    unary_stream: This object's application-specific business logic as a</span><span class="sd">      callable value that takes a request value and a ServicerContext object and</span><span class="sd">      returns an iterator of response values. Only non-None if request_streaming</span><span class="sd">      is False and response_streaming is True.</span><span class="sd">    stream_unary: This object's application-specific business logic as a</span><span class="sd">      callable value that takes an iterator of request values and a</span><span class="sd">      ServicerContext object and returns a response value. Only non-None if</span><span class="sd">      request_streaming is True and response_streaming is False.</span><span class="sd">    stream_stream: This object's application-specific business logic as a</span><span class="sd">      callable value that takes an iterator of request values and a</span><span class="sd">      ServicerContext object and returns an iterator of response values. Only</span><span class="sd">      non-None if request_streaming and response_streaming are both True.</span><span class="sd">  """</span></div><div class="viewcode-block" id="HandlerCallDetails"><a class="viewcode-back" href="../grpc.html#grpc.HandlerCallDetails">[docs]</a><span class="k">class</span> <span class="nc">HandlerCallDetails</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Describes an RPC that has just arrived for service.</span><span class="sd">  Attributes:</span><span class="sd">    method: The method name of the RPC.</span><span class="sd">    invocation_metadata: The metadata from the invocation side of the RPC.</span><span class="sd">  """</span></div><div class="viewcode-block" id="GenericRpcHandler"><a class="viewcode-back" href="../grpc.html#grpc.GenericRpcHandler">[docs]</a><span class="k">class</span> <span class="nc">GenericRpcHandler</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""An implementation of arbitrarily many RPC methods."""</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="GenericRpcHandler.service"><a class="viewcode-back" href="../grpc.html#grpc.GenericRpcHandler.service">[docs]</a>  <span class="k">def</span> <span class="nf">service</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handler_call_details</span><span class="p">):</span>    <span class="sd">"""Services an RPC (or not).</span><span class="sd">    Args:</span><span class="sd">      handler_call_details: A HandlerCallDetails describing the RPC.</span><span class="sd">    Returns:</span><span class="sd">      An RpcMethodHandler with which the RPC may be serviced, or None to</span><span class="sd">        indicate that this object will not be servicing the RPC.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><span class="c1">#############################  Server Interface  ###############################</span><div class="viewcode-block" id="Server"><a class="viewcode-back" href="../grpc.html#grpc.Server">[docs]</a><span class="k">class</span> <span class="nc">Server</span><span class="p">(</span><span class="n">six</span><span class="o">.</span><span class="n">with_metaclass</span><span class="p">(</span><span class="n">abc</span><span class="o">.</span><span class="n">ABCMeta</span><span class="p">)):</span>  <span class="sd">"""Services RPCs."""</span>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Server.add_generic_rpc_handlers"><a class="viewcode-back" href="../grpc.html#grpc.Server.add_generic_rpc_handlers">[docs]</a>  <span class="k">def</span> <span class="nf">add_generic_rpc_handlers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">generic_rpc_handlers</span><span class="p">):</span>    <span class="sd">"""Registers GenericRpcHandlers with this Server.</span><span class="sd">    This method is only safe to call before the server is started.</span><span class="sd">    Args:</span><span class="sd">      generic_rpc_handlers: An iterable of GenericRpcHandlers that will be used</span><span class="sd">        to service RPCs after this Server is started.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Server.add_insecure_port"><a class="viewcode-back" href="../grpc.html#grpc.Server.add_insecure_port">[docs]</a>  <span class="k">def</span> <span class="nf">add_insecure_port</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">):</span>    <span class="sd">"""Reserves a port for insecure RPC service once this Server becomes active.</span><span class="sd">    This method may only be called before calling this Server's start method is</span><span class="sd">    called.</span><span class="sd">    Args:</span><span class="sd">      address: The address for which to open a port.</span><span class="sd">    Returns:</span><span class="sd">      An integer port on which RPCs will be serviced after this link has been</span><span class="sd">        started. This is typically the same number as the port number contained</span><span class="sd">        in the passed address, but will likely be different if the port number</span><span class="sd">        contained in the passed address was zero.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Server.add_secure_port"><a class="viewcode-back" href="../grpc.html#grpc.Server.add_secure_port">[docs]</a>  <span class="k">def</span> <span class="nf">add_secure_port</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">address</span><span class="p">,</span> <span class="n">server_credentials</span><span class="p">):</span>    <span class="sd">"""Reserves a port for secure RPC service after this Server becomes active.</span><span class="sd">    This method may only be called before calling this Server's start method is</span><span class="sd">    called.</span><span class="sd">    Args:</span><span class="sd">      address: The address for which to open a port.</span><span class="sd">      server_credentials: A ServerCredentials.</span><span class="sd">    Returns:</span><span class="sd">      An integer port on which RPCs will be serviced after this link has been</span><span class="sd">        started. This is typically the same number as the port number contained</span><span class="sd">        in the passed address, but will likely be different if the port number</span><span class="sd">        contained in the passed address was zero.</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Server.start"><a class="viewcode-back" href="../grpc.html#grpc.Server.start">[docs]</a>  <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>    <span class="sd">"""Starts this Server's service of RPCs.</span><span class="sd">    This method may only be called while the server is not serving RPCs (i.e. it</span><span class="sd">    is not idempotent).</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div>  <span class="nd">@abc.abstractmethod</span><div class="viewcode-block" id="Server.stop"><a class="viewcode-back" href="../grpc.html#grpc.Server.stop">[docs]</a>  <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">grace</span><span class="p">):</span>    <span class="sd">"""Stops this Server's service of RPCs.</span><span class="sd">    All calls to this method immediately stop service of new RPCs. When existing</span><span class="sd">    RPCs are aborted is controlled by the grace period parameter passed to this</span><span class="sd">    method.</span><span class="sd">    This method may be called at any time and is idempotent. Passing a smaller</span><span class="sd">    grace value than has been passed in a previous call will have the effect of</span><span class="sd">    stopping the Server sooner. Passing a larger grace value than has been</span><span class="sd">    passed in a previous call will not have the effect of stopping the server</span><span class="sd">    later.</span><span class="sd">    Args:</span><span class="sd">      grace: A duration of time in seconds to allow existing RPCs to complete</span><span class="sd">        before being aborted by this Server's stopping. If None, this method</span><span class="sd">        will block until the server is completely stopped.</span><span class="sd">    Returns:</span><span class="sd">      A threading.Event that will be set when this Server has completely</span><span class="sd">      stopped. The returned event may not be set until after the full grace</span><span class="sd">      period (if some ongoing RPC continues for the full length of the period)</span><span class="sd">      of it may be set much sooner (such as if this Server had no RPCs underway</span><span class="sd">      at the time it was stopped or if all RPCs that it had underway completed</span><span class="sd">      very early in the grace period).</span><span class="sd">    """</span>    <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span></div></div><span class="c1">#################################  Functions    ################################</span><div class="viewcode-block" id="unary_unary_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.unary_unary_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">unary_unary_rpc_method_handler</span><span class="p">(</span>    <span class="n">behavior</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates an RpcMethodHandler for a unary-unary RPC method.</span><span class="sd">  Args:</span><span class="sd">    behavior: The implementation of an RPC method as a callable behavior taking</span><span class="sd">      a single request value and returning a single response value.</span><span class="sd">    request_deserializer: An optional request deserialization behavior.</span><span class="sd">    response_serializer: An optional response serialization behavior.</span><span class="sd">  Returns:</span><span class="sd">    An RpcMethodHandler for a unary-unary RPC method constructed from the given</span><span class="sd">      parameters.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_utilities</span>  <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span>      <span class="bp">False</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span> <span class="n">response_serializer</span><span class="p">,</span> <span class="n">behavior</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span>      <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span></div><div class="viewcode-block" id="unary_stream_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.unary_stream_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">unary_stream_rpc_method_handler</span><span class="p">(</span>    <span class="n">behavior</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates an RpcMethodHandler for a unary-stream RPC method.</span><span class="sd">  Args:</span><span class="sd">    behavior: The implementation of an RPC method as a callable behavior taking</span><span class="sd">      a single request value and returning an iterator of response values.</span><span class="sd">    request_deserializer: An optional request deserialization behavior.</span><span class="sd">    response_serializer: An optional response serialization behavior.</span><span class="sd">  Returns:</span><span class="sd">    An RpcMethodHandler for a unary-stream RPC method constructed from the</span><span class="sd">      given parameters.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_utilities</span>  <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span>      <span class="bp">False</span><span class="p">,</span> <span class="bp">True</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span> <span class="n">response_serializer</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="n">behavior</span><span class="p">,</span>      <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span></div><div class="viewcode-block" id="stream_unary_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.stream_unary_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">stream_unary_rpc_method_handler</span><span class="p">(</span>    <span class="n">behavior</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates an RpcMethodHandler for a stream-unary RPC method.</span><span class="sd">  Args:</span><span class="sd">    behavior: The implementation of an RPC method as a callable behavior taking</span><span class="sd">      an iterator of request values and returning a single response value.</span><span class="sd">    request_deserializer: An optional request deserialization behavior.</span><span class="sd">    response_serializer: An optional response serialization behavior.</span><span class="sd">  Returns:</span><span class="sd">    An RpcMethodHandler for a stream-unary RPC method constructed from the</span><span class="sd">      given parameters.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_utilities</span>  <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span>      <span class="bp">True</span><span class="p">,</span> <span class="bp">False</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span> <span class="n">response_serializer</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span>      <span class="n">behavior</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span></div><div class="viewcode-block" id="stream_stream_rpc_method_handler"><a class="viewcode-back" href="../grpc.html#grpc.stream_stream_rpc_method_handler">[docs]</a><span class="k">def</span> <span class="nf">stream_stream_rpc_method_handler</span><span class="p">(</span>        <span class="n">behavior</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">response_serializer</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates an RpcMethodHandler for a stream-stream RPC method.</span><span class="sd">  Args:</span><span class="sd">    behavior: The implementation of an RPC method as a callable behavior taking</span><span class="sd">      an iterator of request values and returning an iterator of response</span><span class="sd">      values.</span><span class="sd">    request_deserializer: An optional request deserialization behavior.</span><span class="sd">    response_serializer: An optional response serialization behavior.</span><span class="sd">  Returns:</span><span class="sd">    An RpcMethodHandler for a stream-stream RPC method constructed from the</span><span class="sd">      given parameters.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_utilities</span>  <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">RpcMethodHandler</span><span class="p">(</span>      <span class="bp">True</span><span class="p">,</span> <span class="bp">True</span><span class="p">,</span> <span class="n">request_deserializer</span><span class="p">,</span> <span class="n">response_serializer</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span>      <span class="n">behavior</span><span class="p">)</span></div><div class="viewcode-block" id="method_handlers_generic_handler"><a class="viewcode-back" href="../grpc.html#grpc.method_handlers_generic_handler">[docs]</a><span class="k">def</span> <span class="nf">method_handlers_generic_handler</span><span class="p">(</span><span class="n">service</span><span class="p">,</span> <span class="n">method_handlers</span><span class="p">):</span>  <span class="sd">"""Creates a grpc.GenericRpcHandler from RpcMethodHandlers.</span><span class="sd">  Args:</span><span class="sd">    service: A service name to be used for the given method handlers.</span><span class="sd">    method_handlers: A dictionary from method name to RpcMethodHandler</span><span class="sd">      implementing the named method.</span><span class="sd">  Returns:</span><span class="sd">    A GenericRpcHandler constructed from the given parameters.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_utilities</span>  <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">DictionaryGenericHandler</span><span class="p">(</span><span class="n">service</span><span class="p">,</span> <span class="n">method_handlers</span><span class="p">)</span></div><div class="viewcode-block" id="ssl_channel_credentials"><a class="viewcode-back" href="../grpc.html#grpc.ssl_channel_credentials">[docs]</a><span class="k">def</span> <span class="nf">ssl_channel_credentials</span><span class="p">(</span>    <span class="n">root_certificates</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">private_key</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">certificate_chain</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates a ChannelCredentials for use with an SSL-enabled Channel.</span><span class="sd">  Args:</span><span class="sd">    root_certificates: The PEM-encoded root certificates or unset to ask for</span><span class="sd">      them to be retrieved from a default location.</span><span class="sd">    private_key: The PEM-encoded private key to use or unset if no private key</span><span class="sd">      should be used.</span><span class="sd">    certificate_chain: The PEM-encoded certificate chain to use or unset if no</span><span class="sd">      certificate chain should be used.</span><span class="sd">  Returns:</span><span class="sd">    A ChannelCredentials for use with an SSL-enabled Channel.</span><span class="sd">  """</span>  <span class="k">if</span> <span class="n">private_key</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">certificate_chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>    <span class="n">pair</span> <span class="o">=</span> <span class="n">_cygrpc</span><span class="o">.</span><span class="n">SslPemKeyCertPair</span><span class="p">(</span><span class="n">private_key</span><span class="p">,</span> <span class="n">certificate_chain</span><span class="p">)</span>  <span class="k">else</span><span class="p">:</span>    <span class="n">pair</span> <span class="o">=</span> <span class="bp">None</span>  <span class="k">return</span> <span class="n">ChannelCredentials</span><span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">channel_credentials_ssl</span><span class="p">(</span><span class="n">root_certificates</span><span class="p">,</span> <span class="n">pair</span><span class="p">))</span></div><div class="viewcode-block" id="metadata_call_credentials"><a class="viewcode-back" href="../grpc.html#grpc.metadata_call_credentials">[docs]</a><span class="k">def</span> <span class="nf">metadata_call_credentials</span><span class="p">(</span><span class="n">metadata_plugin</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Construct CallCredentials from an AuthMetadataPlugin.</span><span class="sd">  Args:</span><span class="sd">    metadata_plugin: An AuthMetadataPlugin to use as the authentication behavior</span><span class="sd">      in the created CallCredentials.</span><span class="sd">    name: A name for the plugin.</span><span class="sd">  Returns:</span><span class="sd">    A CallCredentials.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_plugin_wrapping</span>  <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>    <span class="k">try</span><span class="p">:</span>      <span class="n">effective_name</span> <span class="o">=</span> <span class="n">metadata_plugin</span><span class="o">.</span><span class="n">__name__</span>    <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>      <span class="n">effective_name</span> <span class="o">=</span> <span class="n">metadata_plugin</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span>  <span class="k">else</span><span class="p">:</span>    <span class="n">effective_name</span> <span class="o">=</span> <span class="n">name</span>  <span class="k">return</span> <span class="n">CallCredentials</span><span class="p">(</span>      <span class="n">_plugin_wrapping</span><span class="o">.</span><span class="n">call_credentials_metadata_plugin</span><span class="p">(</span>          <span class="n">metadata_plugin</span><span class="p">,</span> <span class="n">effective_name</span><span class="p">))</span></div><div class="viewcode-block" id="access_token_call_credentials"><a class="viewcode-back" href="../grpc.html#grpc.access_token_call_credentials">[docs]</a><span class="k">def</span> <span class="nf">access_token_call_credentials</span><span class="p">(</span><span class="n">access_token</span><span class="p">):</span>  <span class="sd">"""Construct CallCredentials from an access token.</span><span class="sd">  Args:</span><span class="sd">    access_token: A string to place directly in the http request</span><span class="sd">      authorization header, ie "Authorization: Bearer <access_token>".</span><span class="sd">  Returns:</span><span class="sd">    A CallCredentials.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_auth</span>  <span class="k">return</span> <span class="n">metadata_call_credentials</span><span class="p">(</span>      <span class="n">_auth</span><span class="o">.</span><span class="n">AccessTokenCallCredentials</span><span class="p">(</span><span class="n">access_token</span><span class="p">))</span></div><div class="viewcode-block" id="composite_call_credentials"><a class="viewcode-back" href="../grpc.html#grpc.composite_call_credentials">[docs]</a><span class="k">def</span> <span class="nf">composite_call_credentials</span><span class="p">(</span><span class="n">call_credentials</span><span class="p">,</span> <span class="n">additional_call_credentials</span><span class="p">):</span>  <span class="sd">"""Compose two CallCredentials to make a new one.</span><span class="sd">  Args:</span><span class="sd">    call_credentials: A CallCredentials object.</span><span class="sd">    additional_call_credentials: Another CallCredentials object to compose on</span><span class="sd">      top of call_credentials.</span><span class="sd">  Returns:</span><span class="sd">    A new CallCredentials composed of the two given CallCredentials.</span><span class="sd">  """</span>  <span class="k">return</span> <span class="n">CallCredentials</span><span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">call_credentials_composite</span><span class="p">(</span>          <span class="n">call_credentials</span><span class="o">.</span><span class="n">_credentials</span><span class="p">,</span>          <span class="n">additional_call_credentials</span><span class="o">.</span><span class="n">_credentials</span><span class="p">))</span></div><div class="viewcode-block" id="composite_channel_credentials"><a class="viewcode-back" href="../grpc.html#grpc.composite_channel_credentials">[docs]</a><span class="k">def</span> <span class="nf">composite_channel_credentials</span><span class="p">(</span><span class="n">channel_credentials</span><span class="p">,</span> <span class="n">call_credentials</span><span class="p">):</span>  <span class="sd">"""Compose a ChannelCredentials and a CallCredentials.</span><span class="sd">  Args:</span><span class="sd">    channel_credentials: A ChannelCredentials.</span><span class="sd">    call_credentials: A CallCredentials.</span><span class="sd">  Returns:</span><span class="sd">    A ChannelCredentials composed of the given ChannelCredentials and</span><span class="sd">      CallCredentials.</span><span class="sd">  """</span>  <span class="k">return</span> <span class="n">ChannelCredentials</span><span class="p">(</span>      <span class="n">_cygrpc</span><span class="o">.</span><span class="n">channel_credentials_composite</span><span class="p">(</span>          <span class="n">channel_credentials</span><span class="o">.</span><span class="n">_credentials</span><span class="p">,</span> <span class="n">call_credentials</span><span class="o">.</span><span class="n">_credentials</span><span class="p">))</span></div><div class="viewcode-block" id="ssl_server_credentials"><a class="viewcode-back" href="../grpc.html#grpc.ssl_server_credentials">[docs]</a><span class="k">def</span> <span class="nf">ssl_server_credentials</span><span class="p">(</span>    <span class="n">private_key_certificate_chain_pairs</span><span class="p">,</span> <span class="n">root_certificates</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>    <span class="n">require_client_auth</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>  <span class="sd">"""Creates a ServerCredentials for use with an SSL-enabled Server.</span><span class="sd">  Args:</span><span class="sd">    private_key_certificate_chain_pairs: A nonempty sequence each element of</span><span class="sd">      which is a pair the first element of which is a PEM-encoded private key</span><span class="sd">      and the second element of which is the corresponding PEM-encoded</span><span class="sd">      certificate chain.</span><span class="sd">    root_certificates: PEM-encoded client root certificates to be used for</span><span class="sd">      verifying authenticated clients. If omitted, require_client_auth must also</span><span class="sd">      be omitted or be False.</span><span class="sd">    require_client_auth: A boolean indicating whether or not to require clients</span><span class="sd">      to be authenticated. May only be True if root_certificates is not None.</span><span class="sd">  Returns:</span><span class="sd">    A ServerCredentials for use with an SSL-enabled Server.</span><span class="sd">  """</span>  <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">private_key_certificate_chain_pairs</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>    <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>        <span class="s1">'At least one private key-certificate chain pair is required!'</span><span class="p">)</span>  <span class="k">elif</span> <span class="n">require_client_auth</span> <span class="ow">and</span> <span class="n">root_certificates</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>    <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>        <span class="s1">'Illegal to require client auth without providing root certificates!'</span><span class="p">)</span>  <span class="k">else</span><span class="p">:</span>    <span class="k">return</span> <span class="n">ServerCredentials</span><span class="p">(</span>        <span class="n">_cygrpc</span><span class="o">.</span><span class="n">server_credentials_ssl</span><span class="p">(</span>        <span class="n">root_certificates</span><span class="p">,</span>        <span class="p">[</span><span class="n">_cygrpc</span><span class="o">.</span><span class="n">SslPemKeyCertPair</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">pem</span><span class="p">)</span>         <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">pem</span> <span class="ow">in</span> <span class="n">private_key_certificate_chain_pairs</span><span class="p">],</span>        <span class="n">require_client_auth</span><span class="p">))</span></div><div class="viewcode-block" id="channel_ready_future"><a class="viewcode-back" href="../grpc.html#grpc.channel_ready_future">[docs]</a><span class="k">def</span> <span class="nf">channel_ready_future</span><span class="p">(</span><span class="n">channel</span><span class="p">):</span>  <span class="sd">"""Creates a Future tracking when a Channel is ready.</span><span class="sd">  Cancelling the returned Future does not tell the given Channel to abandon</span><span class="sd">  attempts it may have been making to connect; cancelling merely deactivates the</span><span class="sd">  returned Future's subscription to the given Channel's connectivity.</span><span class="sd">  Args:</span><span class="sd">    channel: A Channel.</span><span class="sd">  Returns:</span><span class="sd">    A Future that matures when the given Channel has connectivity</span><span class="sd">      ChannelConnectivity.READY.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_utilities</span>  <span class="k">return</span> <span class="n">_utilities</span><span class="o">.</span><span class="n">channel_ready_future</span><span class="p">(</span><span class="n">channel</span><span class="p">)</span></div><div class="viewcode-block" id="insecure_channel"><a class="viewcode-back" href="../grpc.html#grpc.insecure_channel">[docs]</a><span class="k">def</span> <span class="nf">insecure_channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates an insecure Channel to a server.</span><span class="sd">  Args:</span><span class="sd">    target: The target to which to connect.</span><span class="sd">    options: A sequence of string-value pairs according to which to configure</span><span class="sd">      the created channel.</span><span class="sd">  Returns:</span><span class="sd">    A Channel to the target through which RPCs may be conducted.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_channel</span>  <span class="k">return</span> <span class="n">_channel</span><span class="o">.</span><span class="n">Channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span></div><div class="viewcode-block" id="secure_channel"><a class="viewcode-back" href="../grpc.html#grpc.secure_channel">[docs]</a><span class="k">def</span> <span class="nf">secure_channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">credentials</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates an insecure Channel to a server.</span><span class="sd">  Args:</span><span class="sd">    target: The target to which to connect.</span><span class="sd">    credentials: A ChannelCredentials instance.</span><span class="sd">    options: A sequence of string-value pairs according to which to configure</span><span class="sd">      the created channel.</span><span class="sd">  Returns:</span><span class="sd">    A Channel to the target through which RPCs may be conducted.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_channel</span>  <span class="k">return</span> <span class="n">_channel</span><span class="o">.</span><span class="n">Channel</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">options</span><span class="p">,</span> <span class="n">credentials</span><span class="o">.</span><span class="n">_credentials</span><span class="p">)</span></div><div class="viewcode-block" id="server"><a class="viewcode-back" href="../grpc.html#grpc.server">[docs]</a><span class="k">def</span> <span class="nf">server</span><span class="p">(</span><span class="n">generic_rpc_handlers</span><span class="p">,</span> <span class="n">thread_pool</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>  <span class="sd">"""Creates a Server with which RPCs can be serviced.</span><span class="sd">  The GenericRpcHandlers passed to this function needn't be the only</span><span class="sd">  GenericRpcHandlers that will be used to serve RPCs; others may be added later</span><span class="sd">  by calling add_generic_rpc_handlers any time before the returned server is</span><span class="sd">  started.</span><span class="sd">  Args:</span><span class="sd">    generic_rpc_handlers: Some number of GenericRpcHandlers that will be used</span><span class="sd">      to service RPCs after the returned Server is started.</span><span class="sd">    thread_pool: A futures.ThreadPoolExecutor to be used by the returned Server</span><span class="sd">      to service RPCs.</span><span class="sd">  Returns:</span><span class="sd">    A Server with which RPCs can be serviced.</span><span class="sd">  """</span>  <span class="kn">from</span> <span class="nn">grpc</span> <span class="kn">import</span> <span class="n">_server</span>  <span class="k">return</span> <span class="n">_server</span><span class="o">.</span><span class="n">Server</span><span class="p">(</span><span class="n">generic_rpc_handlers</span><span class="p">,</span> <span class="n">thread_pool</span><span class="p">)</span></div><span class="c1">###################################  __all__  #################################</span><span class="n">__all__</span> <span class="o">=</span> <span class="p">(</span>    <span class="s1">'FutureTimeoutError'</span><span class="p">,</span>    <span class="s1">'FutureCancelledError'</span><span class="p">,</span>    <span class="s1">'Future'</span><span class="p">,</span>    <span class="s1">'ChannelConnectivity'</span><span class="p">,</span>    <span class="s1">'StatusCode'</span><span class="p">,</span>    <span class="s1">'RpcError'</span><span class="p">,</span>    <span class="s1">'RpcContext'</span><span class="p">,</span>    <span class="s1">'Call'</span><span class="p">,</span>    <span class="s1">'ChannelCredentials'</span><span class="p">,</span>    <span class="s1">'CallCredentials'</span><span class="p">,</span>    <span class="s1">'AuthMetadataContext'</span><span class="p">,</span>    <span class="s1">'AuthMetadataPluginCallback'</span><span class="p">,</span>    <span class="s1">'AuthMetadataPlugin'</span><span class="p">,</span>    <span class="s1">'ServerCredentials'</span><span class="p">,</span>    <span class="s1">'UnaryUnaryMultiCallable'</span><span class="p">,</span>    <span class="s1">'UnaryStreamMultiCallable'</span><span class="p">,</span>    <span class="s1">'StreamUnaryMultiCallable'</span><span class="p">,</span>    <span class="s1">'StreamStreamMultiCallable'</span><span class="p">,</span>    <span class="s1">'Channel'</span><span class="p">,</span>    <span class="s1">'ServicerContext'</span><span class="p">,</span>    <span class="s1">'RpcMethodHandler'</span><span class="p">,</span>    <span class="s1">'HandlerCallDetails'</span><span class="p">,</span>    <span class="s1">'GenericRpcHandler'</span><span class="p">,</span>    <span class="s1">'Server'</span><span class="p">,</span>    <span class="s1">'unary_unary_rpc_method_handler'</span><span class="p">,</span>    <span class="s1">'unary_stream_rpc_method_handler'</span><span class="p">,</span>    <span class="s1">'stream_unary_rpc_method_handler'</span><span class="p">,</span>    <span class="s1">'stream_stream_rpc_method_handler'</span><span class="p">,</span>    <span class="s1">'method_handlers_generic_handler'</span><span class="p">,</span>    <span class="s1">'ssl_channel_credentials'</span><span class="p">,</span>    <span class="s1">'metadata_call_credentials'</span><span class="p">,</span>    <span class="s1">'access_token_call_credentials'</span><span class="p">,</span>    <span class="s1">'composite_call_credentials'</span><span class="p">,</span>    <span class="s1">'composite_channel_credentials'</span><span class="p">,</span>    <span class="s1">'ssl_server_credentials'</span><span class="p">,</span>    <span class="s1">'channel_ready_future'</span><span class="p">,</span>    <span class="s1">'insecure_channel'</span><span class="p">,</span>    <span class="s1">'secure_channel'</span><span class="p">,</span>    <span class="s1">'server'</span><span class="p">,</span><span class="p">)</span></pre></div>           </div>          </div>          <footer>    <hr/>  <div role="contentinfo">    <p>        © Copyright 2016, Author.    </p>  </div>  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. </footer>        </div>      </div>    </section>  </div>        <script type="text/javascript">        var DOCUMENTATION_OPTIONS = {            URL_ROOT:'../',            VERSION:'0.15.0',            COLLAPSE_INDEX:false,            FILE_SUFFIX:'.html',            HAS_SOURCE:  true        };    </script>      <script type="text/javascript" src="../_static/jquery.js"></script>      <script type="text/javascript" src="../_static/underscore.js"></script>      <script type="text/javascript" src="../_static/doctools.js"></script>          <script type="text/javascript" src="../_static/js/theme.js"></script>        <script type="text/javascript">      jQuery(function () {          SphinxRtdTheme.StickyNav.enable();      });  </script>   </body></html>
 |