From 45f7f4f70fb46982eb1a0e6712c90ca410112643 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sun, 17 Dec 2023 18:37:25 -0700 Subject: [PATCH] Try fixing Python < 3.12 --- Lib/fontTools/misc/iterTools.py | 12 ++++++++++++ Lib/fontTools/ttLib/scaleUpem.py | 2 +- Lib/fontTools/varLib/multiVarStore.py | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 Lib/fontTools/misc/iterTools.py diff --git a/Lib/fontTools/misc/iterTools.py b/Lib/fontTools/misc/iterTools.py new file mode 100644 index 000000000..d7b830532 --- /dev/null +++ b/Lib/fontTools/misc/iterTools.py @@ -0,0 +1,12 @@ +from itertools import * + +# Python 3.12: +if "batched" not in globals(): + # https://docs.python.org/3/library/itertools.html#itertools.batched + def batched(iterable, n): + # batched('ABCDEFG', 3) --> ABC DEF G + if n < 1: + raise ValueError("n must be at least one") + it = iter(iterable) + while batch := tuple(islice(it, n)): + yield batch diff --git a/Lib/fontTools/ttLib/scaleUpem.py b/Lib/fontTools/ttLib/scaleUpem.py index 84002d115..b138f7da4 100644 --- a/Lib/fontTools/ttLib/scaleUpem.py +++ b/Lib/fontTools/ttLib/scaleUpem.py @@ -13,7 +13,7 @@ from fontTools.varLib import builder # for VarData.calculateNumShorts from fontTools.varLib.multiVarStore import OnlineMultiVarStoreBuilder from fontTools.misc.vector import Vector from fontTools.misc.fixedTools import otRound -from itertools import batched +from fontTools.misc.iterTools import batched __all__ = ["scale_upem", "ScalerVisitor"] diff --git a/Lib/fontTools/varLib/multiVarStore.py b/Lib/fontTools/varLib/multiVarStore.py index f273650ee..625e05e00 100644 --- a/Lib/fontTools/varLib/multiVarStore.py +++ b/Lib/fontTools/varLib/multiVarStore.py @@ -10,7 +10,7 @@ from fontTools.varLib.builder import ( buildMultiVarStore, buildMultiVarData, ) -from itertools import batched +from fontTools.misc.iterTools import batched from functools import partial from collections import defaultdict from heapq import heappush, heappop