MCPcopy Index your code
hub / github.com/python/cpython / summarize

Function summarize

Tools/c-analyzer/cpython/_capi.py:262–312  ·  view source on GitHub ↗
(items, *, groupby='kind', includeempty=True, minimize=None)

Source from the content-addressed store, hash-verified

260
261
262def summarize(items, *, groupby='kind', includeempty=True, minimize=None):
263 if minimize is None:
264 if includeempty is None:
265 minimize = True
266 includeempty = False
267 else:
268 minimize = includeempty
269 elif includeempty is None:
270 includeempty = minimize
271 elif minimize and includeempty:
272 raise ValueError(f'cannot minimize and includeempty at the same time')
273
274 groupby = _parse_groupby(groupby)[0]
275 _outer, _inner = _resolve_full_groupby(groupby)
276 outers = GROUPINGS[_outer]
277 inners = GROUPINGS[_inner]
278
279 summary = {
280 'totals': {
281 'all': 0,
282 'subs': {o: 0 for o in outers},
283 'bygroup': {o: {i: 0 for i in inners}
284 for o in outers},
285 },
286 }
287
288 for item in items:
289 outer = getattr(item, _outer)
290 inner = getattr(item, _inner)
291 # Update totals.
292 summary['totals']['all'] += 1
293 summary['totals']['subs'][outer] += 1
294 summary['totals']['bygroup'][outer][inner] += 1
295
296 if not includeempty:
297 subtotals = summary['totals']['subs']
298 bygroup = summary['totals']['bygroup']
299 for outer in outers:
300 if subtotals[outer] == 0:
301 del subtotals[outer]
302 del bygroup[outer]
303 continue
304
305 for inner in inners:
306 if bygroup[outer][inner] == 0:
307 del bygroup[outer][inner]
308 if minimize:
309 if len(bygroup[outer]) == 1:
310 del bygroup[outer]
311
312 return summary
313
314
315def _parse_capi(lines, filename):

Callers 3

testSummarizingMethod · 0.85
render_summaryFunction · 0.85
__repr__Method · 0.85

Calls 2

_parse_groupbyFunction · 0.85
_resolve_full_groupbyFunction · 0.85

Tested by 1

testSummarizingMethod · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…