class_docstr: A Theme is a set of HTML templates and configurations.
  
  This class supports both theme directory and theme archive (zipped theme).
class_docstr_tok: ["A","Theme","is","a","set","of","HTML","templates","and","configurations",".","This","class","supports","both","theme","directory","and","theme","archive","(","zipped","theme",")","."]
docstr: Return a list of theme directories, beginning with this theme's,
  then the base theme's, then that one's base theme's, etc.
docstr_tok: ["Return","a","list","of","theme","directories",",","beginning","with","this","theme","'s",",","then","the","base","theme","'s",",","then","that","one","'s","base","theme","'s",",","etc","."]
code: def get_theme_dirs(self) -> list[str]:
      """Return a list of theme directories, beginning with this theme's,
      then the base theme's, then that one's base theme's, etc.
      """
      if self.base is None:
          return [self.themedir]
      else:
          return [self.themedir] + self.base.get_theme_dirs()
  
imports: from __future__ import annotations
  import configparser
  import os
  import shutil
  import sys
  import tempfile
  from os import path
  from typing import TYPE_CHECKING, Any
  from zipfile import ZipFile
  import contextlib
  from sphinx import package_dir
  from sphinx.config import check_confval_types
  from sphinx.errors import ThemeError
  from sphinx.locale import __
  from sphinx.util import logging
  from sphinx.util.osutil import ensuredir
label_desc: Use image node_id 2 for calling the Theme obj's underlying member method code with example usage: obj.get_theme_dirs() and returns: list, unknown