Kiln » Dependencies » Dulwich Read More
Clone URL:  
Pushed to one repository · View In Graph Contained in master

alternates: add alternates check to __contains__ and __iter__ to make it match __getitem__.

Changeset af0eefac08a7

Parent c4f0c51e7583

committed by Jelmer Vernooij

authored by Dmitriy

Changes to one file · Browse files at af0eefac08a7 Showing diff from parent c4f0c51e7583 Diff from another changeset...

 
237
238
239
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
241
242
 
257
258
259
 
 
 
 
 
 
260
261
262
 
283
284
285
286
 
287
288
289
 
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
 
271
272
273
274
275
276
277
278
279
280
281
282
 
303
304
305
 
306
307
308
309
@@ -237,6 +237,20 @@
  return True   return False   + def contains_alternate(self, sha): + """Check if a particular object is present by SHA1 in the alternate storage.""" + for alternate in self.alternates: + if alternate.contains_loose(sha) or alternate.contains_packed(sha): + return True + return False + + def __contains__(self, sha): + """Check if a particular object is present by SHA1 in the main or alternate stores. + + This method makes no distinction between loose and packed objects. + """ + return self.contains_packed(sha) or self.contains_loose(sha) or self.contains_alternate(sha) +   def _load_packs(self):   raise NotImplementedError(self._load_packs)   @@ -257,6 +271,12 @@
  if self._pack_cache is None or self._pack_cache_stale():   self._pack_cache = self._load_packs()   return self._pack_cache + + def _iter_alternate_objects(self): + """Iterate over the SHAs of all the objects in alternate stores.""" + for alternate in self.alternates: + for alternate_object in alternate: + yield alternate_object     def _iter_loose_objects(self):   """Iterate over the SHAs of all loose objects.""" @@ -283,7 +303,7 @@
    def __iter__(self):   """Iterate over the SHAs that are present in this store.""" - iterables = self.packs + [self._iter_loose_objects()] + iterables = self.packs + [self._iter_loose_objects()] + [self._iter_alternate_objects()]   return itertools.chain(*iterables)     def contains_loose(self, sha):