class_docstr: Base class for all normalization operation.
  
  This class standardizes how normalization is specified using the
  ranges and keys parameter. The ranges parameter is designed to be
  very flexible, allowing a concise description for simple
  normalization while allowing complex key- and element- specific
  normalization to also be specified.
class_docstr_tok: ["Base","class","for","all","normalization","operation",".","This","class","standardizes","how","normalization","is","specified","using","the","ranges","and","keys","parameter",".","The","ranges","parameter","is","designed","to","be","very","flexible",",","allowing","a","concise","description","for","simple","normalization","while","allowing","complex","key-","and","element-","specific","normalization","to","also","be","specified","."]
docstr: Method to get the appropriate normalization range dictionary
  given a key and element.
docstr_tok: ["Method","to","get","the","appropriate","normalization","range","dictionary","given","a","key","and","element","."]
code: def get_ranges(self, element, key):
      """
      Method to get the appropriate normalization range dictionary
      given a key and element.
      """
      keys = self.p["keys"]
      ranges = self.p["ranges"]
  
      if ranges == {}:
          return {
              d.name: element.range(d.name, self.data_range)
              for d in element.dimensions()
          }
      if keys is None:
          specs = ranges
      elif keys and not isinstance(ranges, list):
          raise ValueError(
              "Key list specified but ranges parameter"
              " not specified as a list."
          )
      elif len(keys) == len(ranges):
          # Unpack any 1-tuple keys
          try:
              index = keys.index(key)
              specs = ranges[index]
          except Exception:
              raise KeyError(
                  "Could not match element key to defined keys"
              ) from None
      else:
          raise ValueError(
              "Key list length must match length of supplied ranges"
          )
  
      return match_spec(element, specs)
  
file_path: holoviews/holoviews/operation/normalization.py
imports: import param
  from ..core import Overlay
  from ..core.operation import Operation
  from ..core.util import match_spec
  from ..element import Raster
label_desc: Use image node_id 3 for calling the Normalization obj's underlying member method code with example usage: obj.get_ranges(element, key) and returns: match_spec, unknown