@@ -105,44 +105,37 @@ def filename(self):
105105 return self ._raw_filename
106106
107107 def _add_sections (self , sections , resolve ):
108- filename = self ._raw_filename
109- _resolve = resolve
110- if resolve is None and filename == DEFAULT_MANIFEST :
111- _resolve = default_resolve = resolve_default_benchmark
112- sections_seen = {filename : set ()}
113- lastfile = None
108+ seen_by_file = {}
114109 for filename , section , data in sections :
115- if filename != lastfile :
116- _resolve = resolve
117- if _resolve is None and filename == DEFAULT_MANIFEST :
118- _resolve = resolve_default_benchmark
119- lastfile = filename
120-
121- section_key = section
122- if section == "group" :
123- section_key = (section , data [0 ])
124-
125- if filename not in sections_seen :
126- sections_seen [filename ] = {section_key }
127- elif section_key in sections_seen [filename ]:
128- # For now each section_key can only show up once.
129- raise NotImplementedError ((section_key , data ))
130- else :
131- sections_seen [filename ].add (section_key )
132-
133- if section == 'includes' :
134- pass
135- elif section == 'benchmarks' :
136- entries = ((s , m , filename ) for s , m in data )
137- self ._add_benchmarks (entries , _resolve )
138- elif section == 'groups' :
139- for name in data :
140- self ._add_group (name , None )
141- elif section == 'group' :
142- name , entries = data
143- self ._add_group (name , entries )
144- else :
145- raise NotImplementedError ((section , data ))
110+ try :
111+ seen = seen_by_file [filename ]
112+ except KeyError :
113+ seen = seen_by_file [filename ] = set ()
114+ self ._add_section_for_file (filename , section , data , resolve , seen )
115+
116+ def _add_section_for_file (self , filename , section , data , resolve , seen ):
117+ if resolve is None and filename == DEFAULT_MANIFEST :
118+ resolve = resolve_default_benchmark
119+
120+ seen_key = (section , data [0 ]) if section == "group" else section
121+ if seen_key in seen :
122+ # For now each section_key can only show up once.
123+ raise NotImplementedError ((seen_key , data ))
124+ seen .add (seen_key )
125+
126+ if section == 'includes' :
127+ pass
128+ elif section == 'benchmarks' :
129+ entries = ((s , m , filename ) for s , m in data )
130+ self ._add_benchmarks (entries , resolve )
131+ elif section == 'groups' :
132+ for name in data :
133+ self ._add_group (name , None )
134+ elif section == 'group' :
135+ name , entries = data
136+ self ._add_group (name , entries )
137+ else :
138+ raise NotImplementedError ((section , data ))
146139
147140 def _add_benchmarks (self , entries , resolve ):
148141 for spec , metafile , filename in entries :
0 commit comments