def METHOD_NAME(self, client: Client, task_name: str, response: Shareable, fl_ctx: FLContext) -> bool:
    """Process the weights submitted by a client.
    Args:
        client: the client that submitted the response
        task_name: name of the task
        response: submitted data from the client
        fl_ctx: FLContext
    Returns:
        boolean to indicate if the client data is acceptable.
        If not acceptable, the control flow will exit.
    """
    if not isinstance(response, Shareable):
        self.log_error(
            fl_ctx,
            f"bad response from client {client.name}: " f"response must be Shareable but got {type(response)}",
        )
        return False
    try:
        dxo = from_shareable(response)
    except Exception:
        self.log_exception(fl_ctx, f"bad response from client {client.name}: " f"it does not contain DXO")
        return False
    if dxo.data_kind != DataKind.WEIGHTS:
        self.log_error(
            fl_ctx,
            f"bad response from client {client.name}: "
            f"data_kind should be DataKind.WEIGHTS but got {dxo.data_kind}",
        )
        return False
    weights = dxo.data
    if not weights:
        self.log_error(fl_ctx, f"No model weights found from client {client.name}")
        return False
    if not self.final_weights and (
        self.weight_method == WeightMethod.FIRST
        or (self.weight_method == WeightMethod.CLIENT and client.name == self.client_name)
    ):
        self.final_weights = weights
    return True