parameters: (lst)
return_statement: return uniqued_cases, duplicated_cases
docstring: Prunes duplicate enum cases from the list.
  
    Arguments:
     - lst: List whose elements are to be uniqued. Assumes each element is a
       (symbol, value) pair and elements already sorted according to value.
  
    Returns:
     - A list with all duplicates removed. The elements are sorted according to
       value and, for each value, uniqued according to symbol.
       original list,
     - A map from deduplicated cases to the uniqued case.
docstring_summary: Prunes duplicate enum cases from the list.
docstring_tokens: Prunes duplicate enum cases from the list .
function: def uniquify_enum_cases(lst):
    """Prunes duplicate enum cases from the list.
  
    Arguments:
     - lst: List whose elements are to be uniqued. Assumes each element is a
       (symbol, value) pair and elements already sorted according to value.
  
    Returns:
     - A list with all duplicates removed. The elements are sorted according to
       value and, for each value, uniqued according to symbol.
       original list,
     - A map from deduplicated cases to the uniqued case.
    """
    cases = lst
    uniqued_cases = []
    duplicated_cases = {}
  
    # First sort according to the value
    cases.sort(key=lambda x: x[1])
  
    # Then group them according to the value
    for _, groups in itertools.groupby(cases, key=lambda x: x[1]):
      # For each value, sort according to the enumerant symbol.
      sorted_group = sorted(groups, key=lambda x: x[0])
      # Keep the "smallest" case, which is typically the symbol without extension
      # suffix. But we have special cases that we want to fix.
      case = sorted_group[0]
      for i in range(1, len(sorted_group)):
        duplicated_cases[sorted_group[i][0]] = case[0]
      if case[0] == 'HlslSemanticGOOGLE':
        assert len(sorted_group) == 2, 'unexpected new variant for HlslSemantic'
        case = sorted_group[1]
        duplicated_cases[sorted_group[0][0]] = case[0]
      uniqued_cases.append(case)
  
    return uniqued_cases, duplicated_cases
function_tokens: def uniquify_enum_cases ( lst ) : cases = lst uniqued_cases = [ ] duplicated_cases = { } # First sort according to the value cases . sort ( key = lambda x : x [ 1 ] ) # Then group them according to the value for _ , groups in itertools . groupby ( cases , key = lambda x : x [ 1 ] ) : # For each value, sort according to the enumerant symbol. sorted_group = sorted ( groups , key = lambda x : x [ 0 ] ) # Keep the "smallest" case, which is typically the symbol without extension # suffix. But we have special cases that we want to fix. case = sorted_group [ 0 ] for i in range ( 1 , len ( sorted_group ) ) : duplicated_cases [ sorted_group [ i ] [ 0 ] ] = case [ 0 ] if case [ 0 ] == 'HlslSemanticGOOGLE' : assert len ( sorted_group ) == 2 , 'unexpected new variant for HlslSemantic' case = sorted_group [ 1 ] duplicated_cases [ sorted_group [ 0 ] [ 0 ] ] = case [ 0 ] uniqued_cases . append ( case ) return uniqued_cases , duplicated_cases