diff options
author | Tao Bao <tbao@google.com> | 2015-08-31 21:10:06 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-31 21:10:06 +0000 |
commit | 29c245e803496625cb3b72719f1cdce8d73de041 (patch) | |
tree | c0204177fe6bdb73cad34efb08497d7d4b83665c /tools/releasetools/rangelib.py | |
parent | 27bc97e6e14c663e5e55c6a934cc485cadbe9e33 (diff) | |
parent | e337093e6c5d502f0f4094639b41c001b3048d0f (diff) | |
download | build-29c245e803496625cb3b72719f1cdce8d73de041.zip build-29c245e803496625cb3b72719f1cdce8d73de041.tar.gz build-29c245e803496625cb3b72719f1cdce8d73de041.tar.bz2 |
am e337093e: Merge changes from topic \'stash-size\' into mnc-dr-dev
* commit 'e337093e6c5d502f0f4094639b41c001b3048d0f':
Split large files for BBOTA v3.
Revise stash for BBOTAs when needed.
Assert the stash size when generating OTAs.
Diffstat (limited to 'tools/releasetools/rangelib.py')
-rw-r--r-- | tools/releasetools/rangelib.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/releasetools/rangelib.py b/tools/releasetools/rangelib.py index 1506658..373bbed 100644 --- a/tools/releasetools/rangelib.py +++ b/tools/releasetools/rangelib.py @@ -24,6 +24,7 @@ class RangeSet(object): lots of runs.""" def __init__(self, data=None): + # TODO(tbao): monotonic is broken when passing in a tuple. self.monotonic = False if isinstance(data, str): self._parse_internal(data) @@ -260,6 +261,38 @@ class RangeSet(object): out = out.union(RangeSet(str(s1) + "-" + str(e1-1))) return out + def first(self, n): + """Return the RangeSet that contains at most the first 'n' integers. + + >>> RangeSet("0-9").first(1) + <RangeSet("0")> + >>> RangeSet("10-19").first(5) + <RangeSet("10-14")> + >>> RangeSet("10-19").first(15) + <RangeSet("10-19")> + >>> RangeSet("10-19 30-39").first(3) + <RangeSet("10-12")> + >>> RangeSet("10-19 30-39").first(15) + <RangeSet("10-19 30-34")> + >>> RangeSet("10-19 30-39").first(30) + <RangeSet("10-19 30-39")> + >>> RangeSet("0-9").first(0) + <RangeSet("")> + """ + + if self.size() <= n: + return self + + out = [] + for s, e in self: + if e - s >= n: + out += (s, s+n) + break + else: + out += (s, e) + n -= e - s + return RangeSet(data=out) + if __name__ == "__main__": import doctest |