code: def _get_fold_levels(editor):
      
      block = editor.document().firstBlock()
      oed = editor.get_outlineexplorer_data()
  
      folds = []
      parents = []
      prev = None
  
      while block.isValid():
          if TextBlockHelper.is_fold_trigger(block):
              try:
                  data = oed[block.firstLineNumber()]
  
                  if data.def_type in (OED.CLASS, OED.FUNCTION):
                      fsh = FoldScopeHelper(FoldScope(block), data)
  
                      # Determine the parents of the item using a stack.
                      _adjust_parent_stack(fsh, prev, parents)
  
                      # Update the parents of this FoldScopeHelper item
                      fsh.parents = copy.copy(parents)
                      folds.append(fsh)
                      prev = fsh
              except KeyError:
                  pass
  
          block = block.next()
  
      return folds
docs: Return a list of all the class/function definition ranges.
  
      Parameters
      ----------
      editor : :class:`spyder.plugins.editor.widgets.codeeditor.CodeEditor`
  
      Returns
      -------
      folds : list of :class:`FoldScopeHelper`
          A list of all the class or function defintion fold points.