def portable_data_hash(self):
stripped = self.stripped_manifest().encode()
- return hashlib.md5(stripped).hexdigest() + '+' + str(len(stripped))
+ return '{}+{}'.format(hashlib.md5(stripped).hexdigest(), len(stripped))
def manifest_text(self):
self.finish_current_stream()
@synchronized
def keys(self):
"""Get a list of names of files and collections directly contained in this collection."""
- return viewkeys(self._items)
+ return self._items.keys()
@synchronized
def values(self):
return self._portable_data_hash
else:
stripped = self.portable_manifest_text().encode()
- return hashlib.md5(stripped).hexdigest() + '+' + str(len(stripped))
+ return '{}+{}'.format(hashlib.md5(stripped).hexdigest(), len(stripped))
@synchronized
def subscribe(self, callback):