code: def test_uneven_macro_aggrevation(self):
      report1 = {"avg": AverageMetric(1, 1)}
      report2 = {"avg": AverageMetric(0, 1)}
      report3 = {"avg": AverageMetric(0, 1)}
      agg1 = aggregate_named_reports(
          {"a": report1, "b": report2}, micro_average=False
      )
      agg2 = aggregate_named_reports(
          {"a": {}, "c": report3}, micro_average=False
      )
  
      agg = aggregate_unnamed_reports([agg1, agg2])
      assert agg1["avg"] == 0.5
      assert agg2["avg"] == 0.0
      assert agg["a/avg"] == 1.0
      assert agg["b/avg"] == 0.0
      assert agg["c/avg"] == 0.0
      assert agg["avg"] == 1.0 / 3
  
imports: import unittest
  from typing import Dict
  import torch
  import random
  from parlai.core.metrics import AverageMetric, SumMetric, FixedMetric, Metrics, GlobalAverageMetric, MacroAverageMetric, TimerMetric, aggregate_unnamed_reports, aggregate_named_reports, InterDistinctMetric, IntraDistinctMetric, FairseqBleuMetric
  from parlai.core.torch_classifier_agent import ConfusionMatrixMetric, WeightedF1Metric, AUCMetrics
  from parlai.core.torch_generator_agent import PPLMetric
  import parlai.utils.testing
label_desc: Use image node_id 3 for calling the TestAggregators obj's underlying member method code with example usage: obj.test_uneven_macro_aggrevation() without return types