input: Write a function to calculate the maximum, minimum, and average values from a given sequence of numbers. The function should return these values in that order. If the given sequence is empty, it should return (None, None, None).
  
  assert calculate_metrics([3, 4, 5, 6, 21, 8]) == (21, 3, 8.166666666666666)
  assert calculate_metrics([1]) == (1, 1, 1.0)
  assert calculate_metrics([]) == (None, None, None)
  assert calculate_metrics([-1, 0, 1]) == (1, -1, 0.0)
output: def calculate_metrics(seq):
      if not seq:
          return None, None, None
      return max(seq), min(seq), sum(seq) / len(seq)