docstr: Convert uses of `aliases` to `primary_name` upon calling the decorated function/method
  
  Parameters
  ----------
  primary_name: String
      Preferred name for the parameter, the value of which will be set to the value of the
      used alias. If `primary_name` is already explicitly used on call in addition to any
      aliases, the value of `primary_name` will remain unchanged. It only assumes the value of
      an alias if the `primary_name` is not used
  aliases: List, string
      One or multiple string aliases for `primary_name`. If `primary_name` is not used on
      call, its value will be set to that of a random alias in `aliases`. Before calling the
      decorated callable, all `aliases` are removed from its kwargs
  
  Examples
  --------
  >>> class Foo():
  ...     @Alias("a", ["a2"])
  ...     def __init__(self, a, b=None):
  ...         print(a, b)
  >>> @Alias("a", ["a2"])
  ... @Alias("b", ["b2"])
  ... def bar(a, b=None):
  ...    print(a, b)
  >>> foo = Foo(a2="x", b="y")
  x y
  >>> bar(a2="x", b2="y")
  x y
docstr_tok: ["Convert","uses","of","`","aliases","`","to","`","primary_name","`","upon","calling","the","decorated","function\/method","Parameters","--","--","--","--","--","primary_name",":","String","Preferred","name","for","the","parameter",",","the","value","of","which","will","be","set","to","the","value","of","the","used","alias",".","If","`","primary_name","`","is","already","explicitly","used","on","call","in","addition","to","any","aliases",",","the","value","of","`","primary_name","`","will","remain","unchanged",".","It","only","assumes","the","value","of","an","alias","if","the","`","primary_name","`","is","not","used","aliases",":","List",",","string","One","or","multiple","string","aliases","for","`","primary_name","`",".","If","`","primary_name","`","is","not","used","on","call",",","its","value","will","be","set","to","that","of","a","random","alias","in","`","aliases","`",".","Before","calling","the","decorated","callable",",","all","`","aliases","`","are","removed","from","its","kwargs","Examples","--","--","--","--",">",">",">","class","Foo","(",")",":","...","@","Alias","(","``","a","''",",","[","``","a2","''","]",")","...","def","__init__","(","self",",","a",",","b=None",")",":","...","print","(","a",",","b",")",">",">",">","@","Alias","(","``","a","''",",","[","``","a2","''","]",")","...","@","Alias","(","``","b","''",",","[","``","b2","''","]",")","...","def","bar","(","a",",","b=None",")",":","...","print","(","a",",","b",")",">",">",">","foo","=","Foo","(","a2=","''","x","''",",","b=","''","y","''",")","x","y",">",">",">","bar","(","a2=","''","x","''",",","b2=","''","y","''",")","x","y"]
code: def __init__(self, primary_name, aliases):
      """Convert uses of `aliases` to `primary_name` upon calling the decorated function/method
  
      Parameters
      ----------
      primary_name: String
          Preferred name for the parameter, the value of which will be set to the value of the
          used alias. If `primary_name` is already explicitly used on call in addition to any
          aliases, the value of `primary_name` will remain unchanged. It only assumes the value of
          an alias if the `primary_name` is not used
      aliases: List, string
          One or multiple string aliases for `primary_name`. If `primary_name` is not used on
          call, its value will be set to that of a random alias in `aliases`. Before calling the
          decorated callable, all `aliases` are removed from its kwargs
  
      Examples
      --------
      >>> class Foo():
      ...     @Alias("a", ["a2"])
      ...     def __init__(self, a, b=None):
      ...         print(a, b)
      >>> @Alias("a", ["a2"])
      ... @Alias("b", ["b2"])
      ... def bar(a, b=None):
      ...    print(a, b)
      >>> foo = Foo(a2="x", b="y")
      x y
      >>> bar(a2="x", b2="y")
      x y"""
      self.primary_name = primary_name
      self.aliases = aliases if isinstance(aliases, list) else [aliases]
  
imports: from hyperparameter_hunter.utils.boltons_utils import remap, default_enter
  from datetime import datetime
  from inspect import Traceback
  import re
  import string
  from typing import Any, Callable, Iterable, List, Tuple, Union
  import wrapt
label_desc: Use image node_id 1 to create a new Alias object  with example: obj = Alias(primary_name, aliases)