class_docstr: A container for */** parameters. It helps to perform an operation on all the params
  values at the same time.
docstr: Aggregate a list of Params into a single Params by performing the aggregate
  function on the list of values at the same position.
docstr_tok: ["Aggregate","a","list","of","Params","into","a","single","Params","by","performing","the","aggregate","function","on","the","list","of","values","at","the","same","position","."]
code: def agg(
      cls,
      params_list: t.Sequence[Params[T]],
      agg_func: t.Callable[[t.Sequence[T]], To] = pass_through,
  ) -> Params[To]:
      """
      Aggregate a list of Params into a single Params by performing the aggregate
      function on the list of values at the same position.
      """
      if not params_list:
          return Params()
  
      args = tuple(
          agg_func(tuple(params.args[i] for params in params_list))
          for i, _ in enumerate(params_list[0].args)
      )
      kwargs = {
          k: agg_func(tuple(params.kwargs[k] for params in params_list))
          for k in params_list[0].kwargs
      }
      return Params(*args, **kwargs)
  
imports: from __future__ import annotations
  import itertools
  import logging
  import typing
  from typing import TYPE_CHECKING
  import anyio
  from bentoml.exceptions import InvalidArgument
label_desc: Use image node_id 8 for calling the Params obj's underlying member method code with example usage: obj.agg(cls, params_list, agg_func) and returns: Params, Params