code: def select(self, selection_specs=None, **kwargs):
          
          if selection_specs is not None and not isinstance(selection_specs, (list, tuple)):
              selection_specs = [selection_specs]
          selection = super(DynamicMap, self).select(selection_specs, **kwargs)
          def dynamic_select(obj, **dynkwargs):
              if selection_specs is not None:
                  matches = any(obj.matches(spec) for spec in selection_specs)
              else:
                  matches = True
              if matches:
                  return obj.select(**kwargs)
              return obj
  
          if not isinstance(selection, DynamicMap):
              return dynamic_select(selection)
          else:
              from ..util import Dynamic
              dmap = Dynamic(self, operation=dynamic_select, streams=self.streams)
              dmap.data = selection.data
              return dmap
docs: Applies selection by dimension name
  
          Applies a selection along the dimensions of the object using
          keyword arguments. The selection may be narrowed to certain
          objects using selection_specs. For container objects the
          selection will be applied to all children as well.
  
          Selections may select a specific value, slice or set of values:
  
          * value: Scalar values will select rows along with an exact
                   match, e.g.:
  
              ds.select(x=3)
  
          * slice: Slices may be declared as tuples of the upper and
                   lower bound, e.g.:
  
              ds.select(x=(0, 3))
  
          * values: A list of values may be selected using a list or
                    set, e.g.:
  
              ds.select(x=[0, 1, 2])
  
          Args:
              selection_specs: List of specs to match on
                  A list of types, functions, or type[.group][.label]
                  strings specifying which objects to apply the
                  selection on.
              **selection: Dictionary declaring selections by dimension
                  Selections can be scalar values, tuple ranges, lists
                  of discrete values and boolean arrays
  
          Returns:
              Returns an Dimensioned object containing the selected data
              or a scalar if a single value was selected