'Try to import the given names, and return a list of
``[(name, signature, summary_string, real_name), ...]``.'

def get_items(self, names):

    env = self.state.document.settings.env
    prefixes = get_import_prefixes_from_env(env)
    items = []
    max_item_chars = 50
    for name in names:
        display_name = name
        if name.startswith('~'):
            name = name[1:]
            display_name = name.split('.')[(-1)]
        try:
            (real_name, obj, parent, modname) = import_by_name(name, prefixes=prefixes)
        except ImportError:
            self.warn(('failed    to    import    %s' % name))
            items.append((name, '', '', name))
            continue
        self.result = ViewList()
        full_name = real_name
        if (not isinstance(obj, ModuleType)):
            full_name = ((modname + '::') + full_name[(len(modname) + 1):])
        documenter = get_documenter(obj, parent)(self, full_name)
        if (not documenter.parse_name()):
            self.warn(('failed    to    parse    name    %s' % real_name))
            items.append((display_name, '', '', real_name))
            continue
        if (not documenter.import_object()):
            self.warn(('failed    to    import    object    %s' % real_name))
            items.append((display_name, '', '', real_name))
            continue
        if (documenter.options.members and (not documenter.check_module())):
            continue
        try:
            documenter.analyzer = ModuleAnalyzer.for_module(documenter.get_real_modname())
            documenter.analyzer.find_attr_docs()
        except PycodeError as err:
            logger.debug('[autodoc]    module    analyzer    failed:    %s', err)
            documenter.analyzer = None
        sig = documenter.format_signature()
        if (not sig):
            sig = ''
        else:
            max_chars = max(10, (max_item_chars - len(display_name)))
            sig = mangle_signature(sig, max_chars=max_chars)
        documenter.add_content(None)
        doc = list(documenter.process_doc([self.result.data]))
        while (doc and (not doc[0].strip())):
            doc.pop(0)
        for (i, piece) in enumerate(doc):
            if (not piece.strip()):
                doc = doc[:i]
                break
        m = re.search('^([A-Z].*?\\.)(?:\\s|$)', '    '.join(doc).strip())
        if m:
            summary = m.group(1).strip()
        elif doc:
            summary = doc[0].strip()
        else:
            summary = ''
        items.append((display_name, sig, summary, real_name))
    return items
