@@ -105,44 +105,37 @@ def filename(self):
105
105
return self ._raw_filename
106
106
107
107
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 = {}
114
109
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 ))
146
139
147
140
def _add_benchmarks (self , entries , resolve ):
148
141
for spec , metafile , filename in entries :
0 commit comments