code: def select(cls, dataset, selection_mask=None, **selection):
      if cls.geom_dims(dataset):
          data = cls.shape_mask(dataset, selection)
      else:
          data = dataset.data
      if selection_mask is None:
          selection_mask = cls.select_mask(dataset, selection)
      empty = not selection_mask.sum()
      dimensions = dataset.dimensions()
      if empty:
          return {
              d.name: np.array([], dtype=cls.dtype(dataset, d))
              for d in dimensions
          }
      indexed = cls.indexed(dataset, selection)
      new_data = {}
      for k, v in data.items():
          if k not in dimensions or isscalar(v):
              new_data[k] = v
          else:
              new_data[k] = v[selection_mask]
      if (
          indexed
          and len(next(iter(new_data.values()))) == 1
          and len(dataset.vdims) == 1
      ):
          value = new_data[dataset.vdims[0].name]
          return value if isscalar(value) else value[0]
      return new_data
  
imports: import sys
  from collections import OrderedDict
  import numpy
  from holoviews.core.data import Interface, DictInterface, MultiInterface
  from holoviews.core.data.interface import DataError
  from holoviews.core.data.spatialpandas import to_geom_dict
  from holoviews.core.dimension import dimension_name
  from holoviews.core.util import isscalar
  from ..util import asarray, geom_types, geom_to_array, geom_length
label_desc: Use image node_id 15 for calling the GeomDictInterface obj's underlying member method code with example usage: obj.select(cls, dataset, selection_mask) and returns: new_data, unknown, unknown