class_docstr: Extract raw HTML from text.
  
  The raw HTML is stored in the [`htmlStash`][markdown.util.HtmlStash] of the
  [`Markdown`][markdown.Markdown] instance passed to `md` and the remaining text
  is stored in `cleandoc` as a list of strings.
code: def handle_starttag(self, tag: str, attrs: Sequence[tuple[str, str]]):
      # Handle tags that should always be empty and do not specify a closing tag
      if tag in self.empty_tags:
          self.handle_startendtag(tag, attrs)
          return
  
      if self.md.is_block_level(tag) and (
          self.intail or (self.at_line_start() and not self.inraw)
      ):
          # Started a new raw block. Prepare stack.
          self.inraw = True
          self.cleandoc.append("\n")
  
      text = self.get_starttag_text()
      if self.inraw:
          self.stack.append(tag)
          self._cache.append(text)
      else:
          self.cleandoc.append(text)
          if tag in self.CDATA_CONTENT_ELEMENTS:
              # This is presumably a standalone tag in a code span (see #1036).
              self.clear_cdata_mode()
  
imports: from __future__ import annotations
  import re
  import importlib.util
  import sys
  from typing import TYPE_CHECKING, Sequence
label_desc: Use image node_id 7 for calling the HTMLExtractor obj's underlying member method code with example usage: obj.handle_starttag(tag, attrs) without return types