10000 Ensure we use the right _resolve(). (#233) · python/pyperformance@d1cb311 · GitHub
[go: up one dir, main page]

Skip to content

Commit d1cb311

Browse files
Ensure we use the right _resolve(). (#233)
We weren't properly resetting _resolve when switching between files. So if the default manifest came first in a "combined" manifest, any includes or benchmarks after that would erroneously use the default resolve_default_benchmark().
1 parent 4622a0b commit d1cb311

File tree

1 file changed

+30
-37
lines changed

1 file changed

+30
-37
lines changed

pyperformance/_manifest.py

Lines changed: 30 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)
0