diff options
Diffstat (limited to 'src/flake8/utils.py')
| -rw-r--r-- | src/flake8/utils.py | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/flake8/utils.py b/src/flake8/utils.py index 68ed530..52417fc 100644 --- a/src/flake8/utils.py +++ b/src/flake8/utils.py @@ -208,24 +208,26 @@ def filenames_from(arg, predicate=None): """ if predicate is None: predicate = _default_predicate - if os.path.isdir(arg): - for root, sub_directories, files in os.walk(arg): - if predicate(root): - sub_directories[:] = [] - continue + if predicate(arg): + return + + if arg == "-": + # stdin, don't call isdir() + yield arg + elif os.path.isdir(arg): + for root, sub_directories, files in os.walk(arg): # NOTE(sigmavirus24): os.walk() will skip a directory if you # remove it from the list of sub-directories. - for directory in sub_directories: - joined = os.path.join(root, directory) - if predicate(directory) or predicate(joined): - sub_directories.remove(directory) + sub_directories[:] = [ + directory for directory in sub_directories + if not predicate(os.path.join(root, directory)) + ] for filename in files: joined = os.path.join(root, filename) - if predicate(joined) or predicate(filename): - continue - yield joined + if not predicate(joined): + yield joined else: yield arg |
