summaryrefslogtreecommitdiffstats
path: root/python/mozrelease/mozrelease/chunking.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mozrelease/mozrelease/chunking.py')
-rw-r--r--python/mozrelease/mozrelease/chunking.py27
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]