docstr: Parameters:
      primary_hue: The primary hue of the theme. Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object.
      secondary_hue: The secondary hue of the theme. Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object.
      neutral_hue: The neutral hue of the theme, used . Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object.
      text_size: The size of the text. Load a preset, like gradio.themes.sizes.text_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object.
      spacing_size: The size of the spacing. Load a preset, like gradio.themes.sizes.spacing_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object.
      radius_size: The radius size of corners. Load a preset, like gradio.themes.sizes.radius_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object.
      font: The primary font to use for the theme. Pass a string for a system font, or a gradio.themes.font.GoogleFont object to load a font from Google Fonts. Pass a list of fonts for fallbacks.
      font_mono: The monospace font to use for the theme, applies to code. Pass a string for a system font, or a gradio.themes.font.GoogleFont object to load a font from Google Fonts. Pass a list of fonts for fallbacks.
docstr_tok: ["Parameters",":","primary_hue",":","The","primary","hue","of","the","theme",".","Load","a","preset",",","like","gradio.themes.colors.green","(","or","just","the","string","``","green","''",")",",","or","pass","your","own","gradio.themes.utils.Color","object",".","secondary_hue",":","The","secondary","hue","of","the","theme",".","Load","a","preset",",","like","gradio.themes.colors.green","(","or","just","the","string","``","green","''",")",",","or","pass","your","own","gradio.themes.utils.Color","object",".","neutral_hue",":","The","neutral","hue","of","the","theme",",","used",".","Load","a","preset",",","like","gradio.themes.colors.green","(","or","just","the","string","``","green","''",")",",","or","pass","your","own","gradio.themes.utils.Color","object",".","text_size",":","The","size","of","the","text",".","Load","a","preset",",","like","gradio.themes.sizes.text_sm","(","or","just","the","string","``","sm","''",")",",","or","pass","your","own","gradio.themes.utils.Size","object",".","spacing_size",":","The","size","of","the","spacing",".","Load","a","preset",",","like","gradio.themes.sizes.spacing_sm","(","or","just","the","string","``","sm","''",")",",","or","pass","your","own","gradio.themes.utils.Size","object",".","radius_size",":","The","radius","size","of","corners",".","Load","a","preset",",","like","gradio.themes.sizes.radius_sm","(","or","just","the","string","``","sm","''",")",",","or","pass","your","own","gradio.themes.utils.Size","object",".","font",":","The","primary","font","to","use","for","the","theme",".","Pass","a","string","for","a","system","font",",","or","a","gradio.themes.font.GoogleFont","object","to","load","a","font","from","Google","Fonts",".","Pass","a","list","of","fonts","for","fallbacks",".","font_mono",":","The","monospace","font","to","use","for","the","theme",",","applies","to","code",".","Pass","a","string","for","a","system","font",",","or","a","gradio.themes.font.GoogleFont","object","to","load","a","font","from","Google","Fonts",".","Pass","a","list","of","fonts","for","fallbacks","."]
code: def __init__(
      self,
      *,
      primary_hue: colors.Color | str = colors.blue,
      secondary_hue: colors.Color | str = colors.blue,
      neutral_hue: colors.Color | str = colors.gray,
      text_size: sizes.Size | str = sizes.text_md,
      spacing_size: sizes.Size | str = sizes.spacing_md,
      radius_size: sizes.Size | str = sizes.radius_md,
      font: fonts.Font
      | str
      | Iterable[fonts.Font | str] = (
          fonts.GoogleFont("Source Sans Pro"),
          "ui-sans-serif",
          "system-ui",
          "sans-serif",
      ),
      font_mono: fonts.Font
      | str
      | Iterable[fonts.Font | str] = (
          fonts.GoogleFont("IBM Plex Mono"),
          "ui-monospace",
          "Consolas",
          "monospace",
      ),
  ):
      """
      Parameters:
          primary_hue: The primary hue of the theme. Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object.
          secondary_hue: The secondary hue of the theme. Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object.
          neutral_hue: The neutral hue of the theme, used . Load a preset, like gradio.themes.colors.green (or just the string "green"), or pass your own gradio.themes.utils.Color object.
          text_size: The size of the text. Load a preset, like gradio.themes.sizes.text_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object.
          spacing_size: The size of the spacing. Load a preset, like gradio.themes.sizes.spacing_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object.
          radius_size: The radius size of corners. Load a preset, like gradio.themes.sizes.radius_sm (or just the string "sm"), or pass your own gradio.themes.utils.Size object.
          font: The primary font to use for the theme. Pass a string for a system font, or a gradio.themes.font.GoogleFont object to load a font from Google Fonts. Pass a list of fonts for fallbacks.
          font_mono: The monospace font to use for the theme, applies to code. Pass a string for a system font, or a gradio.themes.font.GoogleFont object to load a font from Google Fonts. Pass a list of fonts for fallbacks.
      """
  
      self.name = "base"
  
      def expand_shortcut(shortcut, mode="color", prefix=None):
          if not isinstance(shortcut, str):
              return shortcut
          if mode == "color":
              for color in colors.Color.all:
                  if color.name == shortcut:
                      return color
              raise ValueError(f"Color shortcut {shortcut} not found.")
          elif mode == "size":
              for size in sizes.Size.all:
                  if size.name == f"{prefix}_{shortcut}":
                      return size
              raise ValueError(f"Size shortcut {shortcut} not found.")
  
      primary_hue = expand_shortcut(primary_hue, mode="color")
      secondary_hue = expand_shortcut(secondary_hue, mode="color")
      neutral_hue = expand_shortcut(neutral_hue, mode="color")
      text_size = expand_shortcut(text_size, mode="size", prefix="text")
      spacing_size = expand_shortcut(
          spacing_size, mode="size", prefix="spacing"
      )
      radius_size = expand_shortcut(
          radius_size, mode="size", prefix="radius"
      )
  
      # Hue ranges
      self.primary_50 = primary_hue.c50
      self.primary_100 = primary_hue.c100
      self.primary_200 = primary_hue.c200
      self.primary_300 = primary_hue.c300
      self.primary_400 = primary_hue.c400
      self.primary_500 = primary_hue.c500
      self.primary_600 = primary_hue.c600
      self.primary_700 = primary_hue.c700
      self.primary_800 = primary_hue.c800
      self.primary_900 = primary_hue.c900
      self.primary_950 = primary_hue.c950
  
      self.secondary_50 = secondary_hue.c50
      self.secondary_100 = secondary_hue.c100
      self.secondary_200 = secondary_hue.c200
      self.secondary_300 = secondary_hue.c300
      self.secondary_400 = secondary_hue.c400
      self.secondary_500 = secondary_hue.c500
      self.secondary_600 = secondary_hue.c600
      self.secondary_700 = secondary_hue.c700
      self.secondary_800 = secondary_hue.c800
      self.secondary_900 = secondary_hue.c900
      self.secondary_950 = secondary_hue.c950
  
      self.neutral_50 = neutral_hue.c50
      self.neutral_100 = neutral_hue.c100
      self.neutral_200 = neutral_hue.c200
      self.neutral_300 = neutral_hue.c300
      self.neutral_400 = neutral_hue.c400
      self.neutral_500 = neutral_hue.c500
      self.neutral_600 = neutral_hue.c600
      self.neutral_700 = neutral_hue.c700
      self.neutral_800 = neutral_hue.c800
      self.neutral_900 = neutral_hue.c900
      self.neutral_950 = neutral_hue.c950
  
      # Spacing
      self.spacing_xxs = spacing_size.xxs
      self.spacing_xs = spacing_size.xs
      self.spacing_sm = spacing_size.sm
      self.spacing_md = spacing_size.md
      self.spacing_lg = spacing_size.lg
      self.spacing_xl = spacing_size.xl
      self.spacing_xxl = spacing_size.xxl
  
      self.radius_xxs = radius_size.xxs
      self.radius_xs = radius_size.xs
      self.radius_sm = radius_size.sm
      self.radius_md = radius_size.md
      self.radius_lg = radius_size.lg
      self.radius_xl = radius_size.xl
      self.radius_xxl = radius_size.xxl
  
      self.text_xxs = text_size.xxs
      self.text_xs = text_size.xs
      self.text_sm = text_size.sm
      self.text_md = text_size.md
      self.text_lg = text_size.lg
      self.text_xl = text_size.xl
      self.text_xxl = text_size.xxl
  
      # Font
      if not isinstance(font, Iterable):
          font = [font]
      self._font = [
          fontfam
          if isinstance(fontfam, fonts.Font)
          else fonts.Font(fontfam)
          for fontfam in font
      ]
      if not isinstance(font_mono, Iterable):
          font_mono = [font_mono]
      self._font_mono = [
          fontfam
          if isinstance(fontfam, fonts.Font)
          else fonts.Font(fontfam)
          for fontfam in font_mono
      ]
      self.font = ", ".join(str(font) for font in self._font)
      self.font_mono = ", ".join(str(font) for font in self._font_mono)
  
      self._stylesheets = []
      for font in self._font + self._font_mono:
          font_stylesheet = font.stylesheet()
          if font_stylesheet:
              self._stylesheets.append(font_stylesheet)
  
      self.set()
  
imports: from __future__ import annotations
  import json
  import re
  import tempfile
  import textwrap
  from pathlib import Path
  from typing import Iterable
  import huggingface_hub
  import semantic_version
  from gradio_client.documentation import document, set_documentation_group
  from huggingface_hub import CommitOperationAdd
  from gradio.themes.utils import colors, fonts, get_matching_version, get_theme_assets, sizes
  from gradio.themes.utils.readme_content import README_CONTENT
label_desc: Use image node_id 1 to create a new Base object from inherited base classes: ThemeClass with example: obj = Base()