docs: def final_data_transform_factory(alg, sep, pre_sep):
      """
      Create a function to transform a tuple.
  
      Parameters
      ----------
      alg : ns enum
          Indicate how to format the *str*.
      sep : str
          Separator that was passed to *parse_string_factory*.
      pre_sep : str
          String separator to insert at the at the front
          of the return tuple in the case that the first element
          is *sep*.
  
      Returns
      -------
      func : callable
          A function to be used as the *final_transform* argument to
          *parse_string_factory*.
  
      See Also
      --------
      parse_string_factory
  
      """
      if alg & ns.UNGROUPLETTERS and alg & ns.LOCALEALPHA:
          swap = alg & NS_DUMB and alg & ns.LOWERCASEFIRST
          transform = methodcaller("swapcase") if swap else _no_op
  
          def func(split_val, val, _transform=transform, _sep=sep, _pre_sep=pre_sep):
              """
              Return a tuple with the first character of the first element
              of the return value as the first element, and the return value
              as the second element. This will be used to perform gross sorting
              by the first letter.
              """
              split_val = tuple(split_val)
              if not split_val:
                  return (), ()
              elif split_val[0] == _sep:
                  return (_pre_sep,), split_val
              else:
                  return (_transform(val[0]),), split_val
  
          return func
      else:
          return lambda split_val, val: tuple(split_val)