| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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') |
| OLD | NEW |