class_docstr: Add time_* benchmarks corresponding to cython_special._bench_*_cy
code: def __new__(cls, cls_name, bases, dct):
      params = [(10, 100, 1000), ("python", "numpy", "cython")]
      param_names = ["N", "api"]
  
      def get_time_func(name, args):
          @with_attributes(
              params=[(name,), (args,)] + params,
              param_names=["name", "argument"] + param_names,
          )
          def func(self, name, args, N, api):
              if api == "python":
                  self.py_func(N, *args)
              elif api == "numpy":
                  self.np_func(*self.obj)
              else:
                  self.cy_func(N, *args)
  
          func.__name__ = "time_" + name
          return func
  
      for name in FUNC_ARGS.keys():
          func = get_time_func(name, FUNC_ARGS[name])
          dct[func.__name__] = func
  
      return type.__new__(cls, cls_name, bases, dct)
  
file_path: scipy/benchmarks/benchmarks/cython_special.py
imports: import re
  import numpy
  from scipy import special
  from .common import with_attributes, safe_import
label_desc: Use image node_id 1 for calling the _CythonSpecialMeta obj's underlying member method code with example usage: obj.__new__(cls, cls_name, bases, dct) and returns: type, func