code: def parse(self, argument):
      
      if not self.enum_values:
        return argument
      elif self.case_sensitive:
        if argument not in self.enum_values:
          raise ValueError('value should be one of <%s>' %
                           '|'.join(self.enum_values))
        else:
          return argument
      else:
        if argument.upper() not in [value.upper() for value in self.enum_values]:
          raise ValueError('value should be one of <%s>' %
                           '|'.join(self.enum_values))
        else:
          return [value for value in self.enum_values
                  if value.upper() == argument.upper()][0]
docs: Determine validity of argument and return the correct element of enum.
  
      If self.enum_values is empty, then all arguments are valid and argument
      will be returned.
  
      Otherwise, if argument matches an element in enum, then the first
      matching element will be returned.
  
      Args:
        argument: The supplied flag value.
  
      Returns:
        The matching element from enum_values, or argument if enum_values is
        empty.
  
      Raises:
        ValueError: enum_values was non-empty, but argument didn't match
          anything in enum.