class_docstr: A union of :class:`BenchmarkSet`\s.
  
  This is the main definition of work in this framework.
  
  This will intelligently merge tasks, so if a task is present in multiple benchmark sets, it is
  executed once, and the result reused.
class_docstr_tok: ["A","union","of",":","class",":","`","BenchmarkSet","`","\\s",".","This","is","the","main","definition","of","work","in","this","framework",".","This","will","intelligently","merge","tasks",",","so","if","a","task","is","present","in","multiple","benchmark","sets",",","it","is","executed","once",",","and","the","result","reused","."]
code: def __post_init__(self) -> None:
      set_names = [d.name for d in self.sets]
      assert len(set_names) == len(
          set(set_names)
      ), f"Benchmark sets must have unique names. Got: {set_names}"
  
imports: from dataclasses import dataclass
  from typing import Any, Collection, Dict, List, Optional, Sequence, Set, Tuple
  import pandas
  from benchmark.dataset_api import DatasetFactory
  from benchmark.grouping import GroupingKey, GroupingSpec
  from benchmark.model_api import ModelFactory
  from benchmark.plotter_api import Plotter
  from benchmark.registry import Named, Registry
label_desc: Use image node_id 1 for calling the BenchmarkSuite obj's underlying member method code with example usage: obj.__post_init__() without return types