code: def parse_data_slots(value):
      
      value = unquote(value)
      if '>' in value:
          wrappers, children = value.split('>', 1)
      else:
          wrappers = value
          children = ''
      if '*' in children:
          prepends, appends = children.split('*', 1)
      else:
          prepends = children
          appends = ''
  
      wrappers = list(filter(bool, list(map(str.strip, wrappers.split()))))
      prepends = list(filter(bool, list(map(str.strip, prepends.split()))))
      appends = list(filter(bool, list(map(str.strip, appends.split()))))
  
      return wrappers, prepends, appends
docs: Parse data-slots value into slots used to wrap node, prepend to node or
      append to node.
  
         >>> parse_data_slots('')
         ([], [], [])
  
         >>> parse_data_slots('foo bar')
         (['foo', 'bar'], [], [])
  
         >>> parse_data_slots('foo bar > foobar')
         (['foo', 'bar'], ['foobar'], [])
  
         >>> parse_data_slots('> foobar')
         ([], ['foobar'], [])
  
         >>> parse_data_slots('> foo * bar')
         ([], ['foo'], ['bar'])
  
         >>> parse_data_slots('foobar > foo * bar')
         (['foobar'], ['foo'], ['bar'])
  
         >>> parse_data_slots('foo > * bar')
         (['foo'], [], ['bar'])