docstr: A single emoji character.
  
  Args:
      name (str): Name of emoji.
      style (Union[str, Style], optional): Optional style. Defaults to None.
  
  Raises:
      NoEmoji: If the emoji doesn't exist.
docstr_tok: ["A","single","emoji","character",".","Args",":","name","(","str",")",":","Name","of","emoji",".","style","(","Union","[","str",",","Style","]",",","optional",")",":","Optional","style",".","Defaults","to","None",".","Raises",":","NoEmoji",":","If","the","emoji","does","n't","exist","."]
code: def __init__(
      self,
      name: str,
      style: Union[str, Style] = "none",
      variant: Optional[EmojiVariant] = None,
  ) -> None:
      """A single emoji character.
  
      Args:
          name (str): Name of emoji.
          style (Union[str, Style], optional): Optional style. Defaults to None.
  
      Raises:
          NoEmoji: If the emoji doesn't exist.
      """
      self.name = name
      self.style = style
      self.variant = variant
      try:
          self._char = EMOJI[name]
      except KeyError:
          raise NoEmoji(f"No emoji called {name!r}")
      if variant is not None:
          self._char += self.VARIANTS.get(variant, "")
  
file_path: rich/rich/emoji.py
imports: import sys
  from typing import TYPE_CHECKING, Optional, Union
  from .jupyter import JupyterMixin
  from .segment import Segment
  from .style import Style
  from ._emoji_codes import EMOJI
  from ._emoji_replace import _emoji_replace
label_desc: Use image node_id 1 to create a new Emoji object from inherited base classes: JupyterMixin with example: obj = Emoji(name, style, variant)