class_docstr: Wraps a user-provided callable that is used to handle requests to a replica.
class_docstr_tok: ["Wraps","a","user-provided","callable","that","is","used","to","handle","requests","to","a","replica","."]
code: def _get_user_callable_method(self, method_name: str) -> Callable:
      if self._is_function:
          return self._callable
  
      if not hasattr(self._callable, method_name):
          # Filter to methods that don't start with '__' prefix.
          def callable_method_filter(attr):
              if attr.startswith("__"):
                  return False
              elif not callable(getattr(self._callable, attr)):
                  return False
  
              return True
  
          methods = list(
              filter(callable_method_filter, dir(self._callable))
          )
          raise RayServeException(
              f"Tried to call a method '{method_name}' "
              "that does not exist. Available methods: "
              f"{methods}."
          )
  
      return getattr(self._callable, method_name)
  
imports: import asyncio
  import inspect
  import logging
  import os
  import pickle
  import time
  import traceback
  from contextlib import contextmanager
  from importlib import import_module
  from typing import Any, AsyncGenerator, Callable, Dict, Optional, Tuple, Union
  import starlette.responses
  import ray
  from ray import cloudpickle
  from ray._private.utils import get_or_create_event_loop
  from ray.actor import ActorClass
  from ray.remote_function import RemoteFunction
  from ray.serve import metrics
  from ray.serve._private.autoscaling_metrics import InMemoryMetricsStore
  from ray.serve._private.common import DeploymentID, ReplicaName, ReplicaTag, ServeComponentType, StreamingHTTPRequest, gRPCRequest
  from ray.serve._private.config import DeploymentConfig
  from ray.serve._private.constants import DEFAULT_LATENCY_BUCKET_MS, GRPC_CONTEXT_ARG_NAME, HEALTH_CHECK_METHOD, RAY_SERVE_GAUGE_METRIC_SET_PERIOD_S, RAY_SERVE_REPLICA_AUTOSCALING_METRIC_RECORD_PERIOD_S, RECONFIGURE_METHOD, REPLICA_CONTROL_PLANE_CONCURRENCY_GROUP, SERVE_CONTROLLER_NAME, SERVE_LOGGER_NAME, SERVE_NAMESPACE
  from ray.serve._private.http_util import ASGIAppReplicaWrapper, ASGIArgs, ASGIReceiveProxy, MessageQueue, Response
  from ray.serve._private.logging_utils import access_log_msg, configure_component_cpu_profiler, configure_component_logger, configure_component_memory_profiler, get_component_logger_file_path
  from ray.serve._private.router import RequestMetadata
  from ray.serve._private.utils import MetricsPusher, merge_dict, parse_import_path, wrap_to_ray_error
  from ray.serve._private.version import DeploymentVersion
  from ray.serve.config import AutoscalingConfig
  from ray.serve.deployment import Deployment
  from ray.serve.exceptions import RayServeException
  from ray.serve.schema import LoggingConfig
label_desc: Use image node_id 2 for calling the UserCallableWrapper obj's underlying member method code with example usage: obj._get_user_callable_method(method_name) and returns: getattr, self, True, False, False