From c8cab3395432983c2165dce196ad5204e420a900 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 25 Jan 2009 05:11:21 +0000 Subject: Optimize flatten a bit. --- repoze/bfg/security.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'repoze/bfg/security.py') diff --git a/repoze/bfg/security.py b/repoze/bfg/security.py index 4e61b0ed9..693f253d0 100644 --- a/repoze/bfg/security.py +++ b/repoze/bfg/security.py @@ -312,12 +312,15 @@ def flatten(x): [1, 2, [3, 4], (5, 6)] >>> flatten([[[1,2,3], (42,None)], [4,5], [6], 7, MyVector(8,9,10)]) [1, 2, 3, 42, None, 4, 5, 6, 7, 8, 9, 10]""" - if isinstance(x, basestring): + if not hasattr(x, '__iter__'): return [x] + return _flatten(x) + +def _flatten(iterable): result = [] - for el in x: - if hasattr(el, "__iter__") and not isinstance(el, basestring): - result.extend(flatten(el)) + for el in iterable: + if hasattr(el, "__iter__"): + result.extend(_flatten(el)) else: result.append(el) return result -- cgit v1.2.3