From c05680c5d1b4f0a688a4e560fabde6aa3022596d Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 30 Aug 2015 13:53:14 -0400 Subject: Replace initialize/inject loop with a list comprehension --- setuptools/__init__.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'setuptools/__init__.py') diff --git a/setuptools/__init__.py b/setuptools/__init__.py index 39dd60c6..a884d2d3 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -1,6 +1,7 @@ """Extensions to the 'distutils' for large or complex distributions""" import os +import functools import distutils.core import distutils.filelist from distutils.core import Command as _Command @@ -138,18 +139,24 @@ class Command(_Command): # we can't patch distutils.cmd, alas distutils.core.Command = Command -def findall(dir = os.curdir): +def findall(dir=os.curdir): """Find all files under 'dir' and return the list of full filenames (relative to 'dir'). """ - all_files = [] - for base, dirs, files in os.walk(dir, followlinks=True): - if base==os.curdir or base.startswith(os.curdir+os.sep): - base = base[2:] - if base: - files = [os.path.join(base, f) for f in files] - all_files.extend(filter(os.path.isfile, files)) - return all_files + def _strip_leading_curdir(base): + do_strip = base == os.curdir or base.startswith(os.curdir + os.sep) + return base[2:] if do_strip else base + + def _base_prepend(base): + base = _strip_leading_curdir(base) + return functools.partial(os.path.join, base) + + return [ + file + for base, dirs, files in os.walk(dir, followlinks=True) + for file in map(_base_prepend(base), files) + if os.path.isfile(file) + ] # fix findall bug in distutils (http://bugs.python.org/issue12885) distutils.filelist.findall = findall -- cgit v1.2.1