diff options
Diffstat (limited to 'python/mozrelease/mozrelease/chunking.py')
-rw-r--r-- | python/mozrelease/mozrelease/chunking.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/python/mozrelease/mozrelease/chunking.py b/python/mozrelease/mozrelease/chunking.py new file mode 100644 index 0000000000..8c45f74354 --- /dev/null +++ b/python/mozrelease/mozrelease/chunking.py @@ -0,0 +1,27 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from copy import copy + + +class ChunkingError(Exception): + pass + + +def getChunk(things, chunks, thisChunk): + if thisChunk > chunks: + raise ChunkingError( + "thisChunk (%d) is greater than total chunks (%d)" % (thisChunk, chunks) + ) + possibleThings = copy(things) + nThings = len(possibleThings) + for c in range(1, chunks + 1): + n = nThings // chunks + # If our things aren't evenly divisible by the number of chunks + # we need to append one more onto some of them + if c <= (nThings % chunks): + n += 1 + if c == thisChunk: + return possibleThings[0:n] + del possibleThings[0:n] |