code: def get_full_basename(node, basename):
      
      full_basename = basename
  
      top_level_name = re.sub(r"\(.*\)", "", basename).split(".", 1)[0]
      lookup_node = node
      while not hasattr(lookup_node, "lookup"):
          lookup_node = lookup_node.parent
      assigns = lookup_node.lookup(top_level_name)[1]
      for assignment in assigns:
          if isinstance(assignment, astroid.nodes.ImportFrom):
              import_name = get_full_import_name(assignment, top_level_name)
              full_basename = basename.replace(top_level_name, import_name, 1)
              break
          elif isinstance(assignment, astroid.nodes.Import):
              import_name = resolve_import_alias(top_level_name, assignment.names)
              full_basename = basename.replace(top_level_name, import_name, 1)
              break
          elif isinstance(assignment, astroid.nodes.ClassDef):
              full_basename = "{}.{}".format(assignment.root().name, assignment.name)
              break
  
      if isinstance(node, astroid.nodes.Call):
          full_basename = re.sub(r"\(.*\)", "()", full_basename)
  
      if full_basename.startswith("builtins."):
          return full_basename[len("builtins.") :]
  
      if full_basename.startswith("__builtin__."):
          return full_basename[len("__builtin__.") :]
  
      return full_basename
docs: Resolve a partial base name to the full path.
  
      :param node: The node representing the base name.
      :type node: astroid.NodeNG
      :param basename: The partial base name to resolve.
      :type basename: str
  
      :returns: The fully resolved base name.
      :rtype: str