From: Richard Si <63936253+ichard26@users.noreply.github.com> Date: Fri, 5 Aug 2022 18:04:43 +0000 (-0400) Subject: Load .gitignore and exclude regex at time of use X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/afed2c01903465f9a486ac481a66aa3413cc1b01?ds=sidebyside;hp=e269f44b25737360e0dc65379f889dfa931dc68a Load .gitignore and exclude regex at time of use Loading .gitignore and compiling the exclude regex can take more than 15ms. We shouldn't and don't need to pay this cost if we're simply formatting files given on the command line directly. I would've loved to lazily import pathspec, but the patch won't be clean until the file collection and discovery logic is refactored first. Co-authored-by: Fabio Zadrozny --- diff --git a/src/black/__init__.py b/src/black/__init__.py index afc76e1..117dc83 100644 --- a/src/black/__init__.py +++ b/src/black/__init__.py @@ -623,12 +623,7 @@ def get_sources( ) -> Set[Path]: """Compute the set of files to be formatted.""" sources: Set[Path] = set() - - if exclude is None: - exclude = re_compile_maybe_verbose(DEFAULT_EXCLUDES) - gitignore = get_gitignore(ctx.obj["root"]) - else: - gitignore = None + root = ctx.obj["root"] for s in src: if s == "-" and stdin_filename: @@ -663,6 +658,11 @@ def get_sources( sources.add(p) elif p.is_dir(): + if exclude is None: + exclude = re_compile_maybe_verbose(DEFAULT_EXCLUDES) + gitignore = get_gitignore(root) + else: + gitignore = None sources.update( gen_python_files( p.iterdir(),