docs: def make_request(self, method, *args, **kwargs):
      """Creates a request from a method function call."""
      if args and not use_signature:
          raise NotImplementedError("Only keyword arguments allowed in Python2")
  
      new_kwargs = {kw: unwrap(value) for kw, value in kwargs.items()}
  
      if use_signature:
          new_args = tuple(unwrap(value) for value in args)
          bound_args = method.signature.bind(
              unwrap(self), *new_args, **new_kwargs).arguments
  
          # if we encounter any Enum arguments, replace them with their value
          def translate_enum(arg):
              return arg.value if isinstance(arg, Enum) else arg
  
          for k in bound_args:
              if isinstance(bound_args[k], str):
                  continue
              if isinstance(bound_args[k], dict):
                  continue
  
              try:
                  x = [translate_enum(arg) for arg in bound_args[k]]
                  bound_args[k] = x
              except TypeError:
                  bound_args[k] = translate_enum(bound_args[k])
  
          # replace `self` with the correct keyword
          new_kwargs = {(kw if kw != 'self' else method.field_name): v
                        for kw, v in bound_args.items()}
          # args = tuple(x.value if isinstance(x, Enum) else x for x in args)
  
      else:
          new_kwargs[self.field_name] = unwrap(self)
  
      return method.request_type(**new_kwargs)