Merge branch '9353-retry-http-error' closes #9353
[arvados.git] / sdk / python / arvados / _ranges.py
index 371d003995fb17c276a0638d95e764f80d4d96ab..83874164eebd8bd88b03e6558f14f62c0b991033 100644 (file)
@@ -6,6 +6,8 @@ _logger = logging.getLogger('arvados.ranges')
 RANGES_SPAM = 9
 
 class Range(object):
+    __slots__ = ("locator", "range_start", "range_size", "segment_offset")
+
     def __init__(self, locator, range_start, range_size, segment_offset=0):
         self.locator = locator
         self.range_start = range_start
@@ -53,6 +55,8 @@ def first_block(data_locators, range_start):
     return i
 
 class LocatorAndRange(object):
+    __slots__ = ("locator", "block_size", "segment_offset", "segment_size")
+
     def __init__(self, locator, block_size, segment_offset, segment_size):
         self.locator = locator
         self.block_size = block_size
@@ -99,9 +103,7 @@ def locators_and_ranges(data_locators, range_start, range_size, limit=None):
 
     # We should always start at the first segment due to the binary
     # search.
-    while i < len(data_locators):
-        if limit and len(resp) > limit:
-            break
+    while i < len(data_locators) and len(resp) != limit:
         dl = data_locators[i]
         block_start = dl.range_start
         block_size = dl.range_size