def explore_show_summary(self, list, index=False, expected=None, context=None):
        """Show summary of one capability document

        Given a capability document or index (in list, index True if it is an 
        index), write out a simply textual summary of the document with all 
        related documents shown as numbered options (of the form 
        [#] ...description...) which will then form a menu for the next 
        exploration.

        If expected is not None then it should be a list of expected document
        types. If this is set then a warning will be printed if list is not
        one of these document types.

        Look for certain top-level link types including rel="up".
        """
        num_entries = len(list.resources)
        capability = '(unknown capability)'
        if ('capability' in list.md):
            capability = list.md['capability']
        if (index):
            capability += 'index'
        print("Parsed %s document with %d entries:" % (capability,num_entries))
        if (expected is not None and capability not in expected):
            print("WARNING - expected a %s document" % (','.join(expected)))
        if (capability not in ['description','descriptionoindex','capabilitylist',
                               'resourcelist','resourcelistindex','changelist','changelistindex',
                               'resourcedump','resourcedumpindex','changedump','changedumpindex',
                               'resourcelist-archive', 'resourcedump-archive',
                               'changelist-archive', 'changedump-archive']):
            print("WARNING - unknown %s document type" % (capability))
        to_show = num_entries
        if (num_entries>21):
            to_show = 20
        # What capability entries are allowed/expected? 
        entry_caps = self.allowed_entries(capability);
        options = {}
        n=0
        # Look for <rs:ln> elements in this document
        ln_describedby = list.link('describedby')
        if (ln_describedby):
            if ('href' in ln_describedby):
                uri = ln_describedby['href']
                print("[%s] rel='describedby' link to %s" % ('d',uri))
                uri = self.expand_relative_uri(context,uri)
                options['d']=Resource(uri,capability='resource')
            else:
                print("WARNING - describedby link with no href, ignoring")
        ln_up = list.link('up')
        if (ln_up):
            if ('href' in ln_up):
                uri = ln_up['href']
                print("[%s] rel='up' link to %s" % ('u',uri))
                uri = self.expand_relative_uri(context,uri)
                options['u']=Resource(uri)
            else:
                print("WARNING - up link with no href, ignoring")
        ln_index = list.link('index')
        if (ln_index):
            if ('href' in ln_index):
                uri = ln_index['href']
                print("[%s] rel='index' link to %s" % ('i',uri))
                uri = self.expand_relative_uri(context,uri)
                options['i']=Resource(uri)
            else:
                print("WARNING - index link with no href, ignoring")
        # Show listed resources as numbered options
        for r in list.resources:
            if (n>=to_show):
                print((num_entries-n) % "(not showing remaining %d entries)")
                break
            n+=1
            options[str(n)]=r
            print("[%d] %s" % (n,r.uri))
            if (self.verbose):
                print("  " + str(r))
            r.uri = self.expand_relative_uri(context,r.uri)
            if (r.capability is not None):
                warning = ''
                if (r.capability not in entry_caps):
                    warning = " (EXPECTED %s)" % (' or '.join(entry_caps))
                print("  %s%s" % (r.capability,warning))
            elif (len(entry_caps)==1):
                r.capability=entry_caps[0]
                print("  capability not specified, should be %s" % (r.capability))
        return(options,capability)
dataset/ETHPy150Open resync/resync/resync/explorer.py/Explorer.explore_show_summary/swapped operands of `%`