summaryrefslogtreecommitdiff
path: root/bin/tools
diff options
context:
space:
mode:
Diffstat (limited to 'bin/tools')
-rw-r--r--bin/tools/misc.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/bin/tools/misc.py b/bin/tools/misc.py
index 284324873de..ff20966857e 100644
--- a/bin/tools/misc.py
+++ b/bin/tools/misc.py
@@ -32,6 +32,7 @@ import zipfile
import release
import socket
import re
+from itertools import islice
if sys.version_info[:2] < (2, 4):
from threadinglocal import local
@@ -1267,6 +1268,18 @@ def detect_server_timezone():
return 'UTC'
+def split_every(n, iterable, piece_maker=tuple):
+ """Splits an iterable into length-n pieces. The last piece will be shorter
+ if ``n`` does not evenly divide the iterable length.
+ @param ``piece_maker``: function to build the pieces
+ from the slices (tuple,list,...)
+ """
+ iterator = iter(iterable)
+ piece = piece_maker(islice(iterator, n))
+ while piece:
+ yield piece
+ piece = piece_maker(islice(iterator, n))
+
if __name__ == '__main__':
import doctest
doctest.testmod()