code: def wildcard_import_names(self):
          
          # We separate the different steps of lookup in try/excepts
          # to avoid catching too many Exceptions
          default = [name for name in self.keys() if not name.startswith("_")]
          try:
              all_values = self["__all__"]
          except KeyError:
              return default
  
          try:
              explicit = next(all_values.assigned_stmts())
          except exceptions.InferenceError:
              return default
          except AttributeError:
              # not an assignment node
              # XXX infer?
              return default
  
          # Try our best to detect the exported name.
          inferred = []
          try:
              explicit = next(explicit.infer())
          except exceptions.InferenceError:
              return default
          if not isinstance(explicit, (node_classes.Tuple, node_classes.List)):
              return default
  
          str_const = lambda node: (
              isinstance(node, node_classes.Const) and isinstance(node.value, str)
          )
          for node in explicit.elts:
              if str_const(node):
                  inferred.append(node.value)
              else:
                  try:
                      inferred_node = next(node.infer())
                  except exceptions.InferenceError:
                      continue
                  if str_const(inferred_node):
                      inferred.append(inferred_node.value)
          return inferred
docs: The list of imported names when this module is 'wildcard imported'.
  
          It doesn't include the '__builtins__' name which is added by the
          current CPython implementation of wildcard imports.
  
          :returns: The list of imported names.
          :rtype: list(str)