diff options
Diffstat (limited to 'bin/tools/misc.py')
| -rw-r--r-- | bin/tools/misc.py | 13 |
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() |
