class_docstr: An alias to another magic function.
  
  An alias is determined by its magic name and magic kind. Lookup
  is done at call time, so if the underlying magic changes the alias
  will call the new function.
  
  Use the :meth:`MagicsManager.register_alias` method or the
  `%alias_magic` magic function to create and register a new alias.
class_docstr_tok: ["An","alias","to","another","magic","function",".","An","alias","is","determined","by","its","magic","name","and","magic","kind",".","Lookup","is","done","at","call","time",",","so","if","the","underlying","magic","changes","the","alias","will","call","the","new","function",".","Use","the",":","meth",":","`","MagicsManager.register_alias","`","method","or","the","`","%","alias_magic","`","magic","function","to","create","and","register","a","new","alias","."]
code: def __init__(self, shell, magic_name, magic_kind, magic_params=None):
      self.shell = shell
      self.magic_name = magic_name
      self.magic_params = magic_params
      self.magic_kind = magic_kind
  
      self.pretty_target = "%s%s" % (
          magic_escapes[self.magic_kind],
          self.magic_name,
      )
      self.__doc__ = "Alias for `%s`." % self.pretty_target
  
      self._in_call = False
  
imports: import os
  import re
  import sys
  from getopt import getopt, GetoptError
  from traitlets.config.configurable import Configurable
  from .None import oinspect
  from .error import UsageError
  from .inputtransformer2 import ESC_MAGIC, ESC_MAGIC2
  from ..utils.ipstruct import Struct
  from ..utils.process import arg_split
  from ..utils.text import dedent
  from traitlets import Bool, Dict, Instance, observe
  from logging import error
label_desc: Use image node_id 1 to create a new MagicAlias object from inherited base classes: object with example: obj = MagicAlias(shell, magic_name, magic_kind, magic_params)