From 17c19bd6ef3c63e112f82f3e81c1d863fd5074e5 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 22 Mar 2014 09:05:56 -0400 Subject: Extracted directory detection and presence of '.' in name. --- setuptools/__init__.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'setuptools/__init__.py') diff --git a/setuptools/__init__.py b/setuptools/__init__.py index a4c46222..2e9c14f4 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -50,15 +50,13 @@ def find_packages(where='.', exclude=(), include=('*',)): stack=[(convert_path(where), '')] while stack: where,prefix = stack.pop(0) - for name in os.listdir(where): + dirs = _dirs(where) + suitable = filterfalse(lambda n: '.' in n, dirs) + for name in suitable: fn = os.path.join(where,name) looks_like_package = ( - '.' not in name - and os.path.isdir(fn) - and ( - os.path.isfile(os.path.join(fn, '__init__.py')) - or sys.version_info[:2] >= (3, 3) # PEP 420 - ) + os.path.isfile(os.path.join(fn, '__init__.py')) + or sys.version_info[:2] >= (3, 3) # PEP 420 ) if looks_like_package: pkg_name = prefix + name @@ -70,6 +68,16 @@ def find_packages(where='.', exclude=(), include=('*',)): out = filterfalse(excludes, out) return list(out) +def _dirs(target): + """ + Return all directories in target + """ + return ( + fn + for fn in os.listdir(target) + if os.path.isdir(os.path.join(target, fn)) + ) + def _build_filter(*patterns): """ Given a list of patterns, return a callable that will be true only if -- cgit v1.2.1