Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: tools/binary_size/libsupersize/describe.py

Issue 2924343004: supersize: Fix path counts, missing section in clusters (Closed)
Patch Set: add comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/binary_size/libsupersize/diff.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2017 The Chromium Authors. All rights reserved. 1 # Copyright 2017 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 """Methods for converting model objects to human-readable formats.""" 4 """Methods for converting model objects to human-readable formats."""
5 5
6 import datetime 6 import datetime
7 import itertools 7 import itertools
8 import time 8 import time
9 9
10 import models 10 import models
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 children_desc = self._DescribeSymbolGroupChildren(group) 193 children_desc = self._DescribeSymbolGroupChildren(group)
194 return itertools.chain(header_desc, children_desc) 194 return itertools.chain(header_desc, children_desc)
195 195
196 def _DescribeDiffObjectPaths(self, diff): 196 def _DescribeDiffObjectPaths(self, diff):
197 paths_by_status = [set(), set(), set(), set()] 197 paths_by_status = [set(), set(), set(), set()]
198 def helper(group): 198 def helper(group):
199 for s in group: 199 for s in group:
200 if s.IsGroup(): 200 if s.IsGroup():
201 helper(s) 201 helper(s)
202 else: 202 else:
203 status = group.DiffStatus(s) 203 path = s.source_path or s.object_path
204 paths_by_status[status].add(s.source_path or s.object_path) 204 # Ignore paths like foo/{shared}/2
205 if '{' not in path:
206 paths_by_status[group.DiffStatus(s)].add(path)
205 helper(diff) 207 helper(diff)
206 # Show only paths that have no changed symbols (pure adds / removes). 208 # Initial paths sets are those where *any* symbol is
209 # unchanged/changed/added/removed.
207 unchanged, changed, added, removed = paths_by_status 210 unchanged, changed, added, removed = paths_by_status
211 # Consider a path with both adds & removes as "changed".
212 changed.update(added.intersection(removed))
213 # Consider a path added / removed only when all symbols are new/removed.
208 added.difference_update(unchanged) 214 added.difference_update(unchanged)
209 added.difference_update(changed) 215 added.difference_update(changed)
216 added.difference_update(removed)
210 removed.difference_update(unchanged) 217 removed.difference_update(unchanged)
211 removed.difference_update(changed) 218 removed.difference_update(changed)
219 removed.difference_update(added)
212 yield '{} paths added, {} removed, {} changed'.format( 220 yield '{} paths added, {} removed, {} changed'.format(
213 len(added), len(removed), len(changed)) 221 len(added), len(removed), len(changed))
214 222
215 if self.verbose and len(added): 223 if self.verbose and len(added):
216 yield 'Added files:' 224 yield 'Added files:'
217 for p in sorted(added): 225 for p in sorted(added):
218 yield ' ' + p 226 yield ' ' + p
219 if self.verbose and len(removed): 227 if self.verbose and len(removed):
220 yield 'Removed files:' 228 yield 'Removed files:'
221 for p in sorted(removed): 229 for p in sorted(removed):
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 365
358 def GenerateLines(obj, verbose=False, recursive=False): 366 def GenerateLines(obj, verbose=False, recursive=False):
359 """Returns an iterable of lines (without \n) that describes |obj|.""" 367 """Returns an iterable of lines (without \n) that describes |obj|."""
360 return Describer(verbose=verbose, recursive=recursive).GenerateLines(obj) 368 return Describer(verbose=verbose, recursive=recursive).GenerateLines(obj)
361 369
362 370
363 def WriteLines(lines, func): 371 def WriteLines(lines, func):
364 for l in lines: 372 for l in lines:
365 func(l) 373 func(l)
366 func('\n') 374 func('\n')
OLDNEW
« no previous file with comments | « no previous file | tools/binary_size/libsupersize/diff.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698