parameters: (s, wordmap)
docstring: _match_abbrev(s : string, wordmap : {string : Option}) -> string
  
      Return the string key in 'wordmap' for which 's' is an unambiguous
      abbreviation.  If 's' is found to be ambiguous or doesn't match any of
      'words', raise BadOptionError.
docstring_summary: _match_abbrev(s : string, wordmap : {string : Option}) -> string
docstring_tokens: _match_abbrev ( s : string wordmap : { string : Option } ) - > string
function: def _match_abbrev(s, wordmap):
      """_match_abbrev(s : string, wordmap : {string : Option}) -> string
  
      Return the string key in 'wordmap' for which 's' is an unambiguous
      abbreviation.  If 's' is found to be ambiguous or doesn't match any of
      'words', raise BadOptionError.
      """
      # Is there an exact match?
      if s in wordmap:
          return s
      else:
          # Isolate all words with s as a prefix.
          possibilities = [word for word in wordmap.keys()
                           if word.startswith(s)]
          # No exact match, so there had better be just one possibility.
          if len(possibilities) == 1:
              return possibilities[0]
          elif not possibilities:
              raise BadOptionError(s)
          else:
              # More than one possible completion: ambiguous prefix.
              possibilities.sort()
              raise AmbiguousOptionError(s, possibilities)
function_tokens: def _match_abbrev ( s , wordmap ) : # Is there an exact match? if s in wordmap : return s else : # Isolate all words with s as a prefix. possibilities = [ word for word in wordmap . keys ( ) if word . startswith ( s ) ] # No exact match, so there had better be just one possibility. if len ( possibilities ) == 1 : return possibilities [ 0 ] elif not possibilities : raise BadOptionError ( s ) else : # More than one possible completion: ambiguous prefix. possibilities . sort ( ) raise AmbiguousOptionError ( s , possibilities )