class_docstr: Client wrapper to connect to remote RPC server using GRPC.
  
  If Client is created with (list_registered_methods=True):
  1. Input and output specs for the methods till this point will be fetched from
  Server.
  2. convenience methods are added to invoke registered methods directly from
  client.
  For example:
    For call a server method `add`
    client.add(a, b) or client.add_async(a, b) can be used instead of
    client.call(args=[a,b], output_specs=[..])
  
  Prerequiste for using list_registered_methods=True:
   1. Server should be already started with the registered methods.
   2. Client must be created in Eager mode.
class_docstr_tok: ["Client","wrapper","to","connect","to","remote","RPC","server","using","GRPC",".","If","Client","is","created","with","(","list_registered_methods=True",")",":","1",".","Input","and","output","specs","for","the","methods","till","this","point","will","be","fetched","from","Server",".","2.","convenience","methods","are","added","to","invoke","registered","methods","directly","from","client",".","For","example",":","For","call","a","server","method","`","add","`","client.add","(","a",",","b",")","or","client.add_async","(","a",",","b",")","can","be","used","instead","of","client.call","(","args=","[","a",",","b","]",",","output_specs=","[","..","]",")","Prerequiste","for","using","list_registered_methods=True",":","1",".","Server","should","be","already","started","with","the","registered","methods",".","2",".","Client","must","be","created","in","Eager","mode","."]
code: def __init__(
      self,
      address: str,
      name: str = "",
      list_registered_methods=False,
      timeout_in_ms=0,
  ):
      self._client_handle, methods = gen_rpc_ops.rpc_client(
          shared_name=name,
          server_address=address,
          list_registered_methods=list_registered_methods,
          timeout_in_ms=timeout_in_ms,
      )
      if context.executing_eagerly():
          self._handle_deleter = (
              resource_variable_ops.EagerResourceDeleter(
                  handle=self._client_handle,
                  handle_device=self._client_handle.device,
              )
          )
      else:
          raise NotImplementedError(
              "Client creation is supported only in eager mode."
          )
      self._server_address = address
      self._method_registry = {}
      for method in methods.numpy():
          m = rpc_pb2.RegisteredMethod()
          m.ParseFromString(method)
          output_specs = nested_structure_coder.decode_proto(
              m.output_specs
          )
          input_specs = nested_structure_coder.decode_proto(
              m.input_specs
          )
          self._method_registry[m.method] = output_specs
          # TODO(ishark): Perhaps doc string can also be taken as input during
          # function registration.
          doc_string = (
              "RPC Call for "
              + m.method
              + " method to server "
              + address
          )
          self._add_method(
              m.method,
              output_specs,
              input_specs,
              self._client_handle,
              doc_string,
          )
  
imports: from typing import Optional, Sequence, Union
  import tensorflow.distribute.experimental.rpc.kernels.gen_rpc_ops
  from tensorflow.distribute.experimental.rpc.proto import tf_rpc_service_pb2
  from tensorflow.python.eager import context
  from tensorflow.python.eager import def_function
  from tensorflow.python.eager import function
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import none_tensor
  from tensorflow.python.framework import type_spec
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import resource_variable_ops
  from tensorflow.python.saved_model import nested_structure_coder
  from tensorflow.python.types import core
  from tensorflow.python.util import nest
  from tensorflow.python.util.tf_export import tf_export
label_desc: Use image node_id 1 to create a new GrpcClient object from inherited base classes: Client with example: obj = GrpcClient(address, name, list_registered_methods, timeout_in_ms)