class_docstr: Combines a function and its parametrization for running experiments (see benchmark subpackage)
  
  Parameters
  ----------
  function: callable
      the callable to convert
  parametrization: Parameter
      the parametrization of the function
  Notes
  -----
  - you can redefine custom "evaluation_function" and "compute_pseudotime" for custom behaviors in experiments
  - the bool/int/str/float init arguments are added as descriptors for the experiment which will serve in
    definining test cases. You can add more through "add_descriptors".
  - Makes sure you the "copy()" methods works (provides a new copy of the function *and* its parametrization)
    if you subclass ExperimentFunction since it is intensively used in benchmarks.
    By default, this will create a new instance using the same init arguments as your current instance
    (they were recorded through "__new__"'s magic) and apply the additional descriptors you may have added,
    as well as propagate the new parametrization *if it has a different name as the current one*.
class_docstr_tok: ["Combines","a","function","and","its","parametrization","for","running","experiments","(","see","benchmark","subpackage",")","Parameters","--","--","--","--","--","function",":","callable","the","callable","to","convert","parametrization",":","Parameter","the","parametrization","of","the","function","Notes","--","--","-","-","you","can","redefine","custom","``","evaluation_function","''","and","``","compute_pseudotime","''","for","custom","behaviors","in","experiments","-","the","bool\/int\/str\/float","init","arguments","are","added","as","descriptors","for","the","experiment","which","will","serve","in","definining","test","cases",".","You","can","add","more","through","``","add_descriptors","''",".","-","Makes","sure","you","the","``","copy","(",")","''","methods","works","(","provides","a","new","copy","of","the","function","*","and","*","its","parametrization",")","if","you","subclass","ExperimentFunction","since","it","is","intensively","used","in","benchmarks",".","By","default",",","this","will","create","a","new","instance","using","the","same","init","arguments","as","your","current","instance","(","they","were","recorded","through","``","__new__","''","'s","magic",")","and","apply","the","additional","descriptors","you","may","have","added",",","as","well","as","propagate","the","new","parametrization","*","if","it","has","a","different","name","as","the","current","one","*","."]
docstr: Identifies initialization parameters during initialization and store them
docstr_tok: ["Identifies","initialization","parameters","during","initialization","and","store","them"]
code: def __new__(cls: tp.Type[EF], *args: tp.Any, **kwargs: tp.Any) -> EF:
      """Identifies initialization parameters during initialization and store them"""
      inst = object.__new__(cls)
      sig = inspect.signature(cls.__init__)
      callargs: tp.Dict[str, tp.Any] = {}
      try:
          boundargs = sig.bind(inst, *args, **kwargs)
      except TypeError:
          pass  # either a problem which will be caught later or a unpickling
      else:
          boundargs.apply_defaults()  # make sure we get the default non-provided arguments
          callargs = dict(boundargs.arguments)
          callargs.pop("self")
      inst._auto_init = callargs
      inst._descriptors = {
          x: y
          for x, y in callargs.items()
          if isinstance(y, (str, tuple, int, float, bool))
      }
      # if "bonnans" in str(cls.__name__) or "discrete" in str(cls.__name__) or "pbo" in str(cls.__name__):
      #    inst._descriptors = {
      #        x: y for x, y in callargs.items() if isinstance(y, (str, tuple, int, float, bool)) and "dimension" not
      #        in x and "paramet" not in x
      #    }
      inst._descriptors["function_class"] = cls.__name__
      return inst
  
imports: import inspect
  from pathlib import Path
  import numbers
  import numpy
  import nevergrad.common.typing
  from nevergrad.common import errors
  from nevergrad.common.errors import UnsupportedExperiment
  from nevergrad.parametrization import parameter
  from nevergrad.optimization import multiobjective
label_desc: Use image node_id 1 for calling the ExperimentFunction obj's underlying member method code with example usage: obj.__new__(cls) and returns: inst