code: def _validate_key(self, key):
          
          if key == () and len(self.kdims) == 0: return ()
          key = util.wrap_tuple(key)
          assert len(key) == len(self.kdims)
          for ind, val in enumerate(key):
              kdim = self.kdims[ind]
              low, high = util.max_range([kdim.range, kdim.soft_range])
              if util.is_number(low) and util.isfinite(low):
                  if val < low:
                      raise KeyError("Key value %s below lower bound %s"
                                     % (val, low))
              if util.is_number(high) and util.isfinite(high):
                  if val > high:
                      raise KeyError("Key value %s above upper bound %s"
                                     % (val, high))
docs: Make sure the supplied key values are within the bounds
          specified by the corresponding dimension range and soft_range.