equal
deleted
inserted
replaced
368 size = len(self._files) |
368 size = len(self._files) |
369 for m in self._dirs.values(): |
369 for m in self._dirs.values(): |
370 size += m.__len__() |
370 size += m.__len__() |
371 return size |
371 return size |
372 |
372 |
|
373 def _isempty(self): |
|
374 return (not self._files and (not self._dirs or |
|
375 util.all(m._isempty() for m in self._dirs.values()))) |
|
376 |
373 def __str__(self): |
377 def __str__(self): |
374 return '<treemanifest dir=%s>' % self._dir |
378 return '<treemanifest dir=%s>' % self._dir |
375 |
379 |
376 def iteritems(self): |
380 def iteritems(self): |
377 for p, n in sorted(self._dirs.items() + self._files.items()): |
381 for p, n in sorted(self._dirs.items() + self._files.items()): |
443 def __delitem__(self, f): |
447 def __delitem__(self, f): |
444 dir, subpath = _splittopdir(f) |
448 dir, subpath = _splittopdir(f) |
445 if dir: |
449 if dir: |
446 self._dirs[dir].__delitem__(subpath) |
450 self._dirs[dir].__delitem__(subpath) |
447 # If the directory is now empty, remove it |
451 # If the directory is now empty, remove it |
448 if not self._dirs[dir]._dirs and not self._dirs[dir]._files: |
452 if self._dirs[dir]._isempty(): |
449 del self._dirs[dir] |
453 del self._dirs[dir] |
450 else: |
454 else: |
451 del self._files[f] |
455 del self._files[f] |
452 if f in self._flags: |
456 if f in self._flags: |
453 del self._flags[f] |
457 del self._flags[f] |