]> git.madduck.net Git - etc/vim.git/blobdiff - black.py

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

`python_version` => `language_version` (#296)
[etc/vim.git] / black.py
index 61b884ad262ccf3e08a0fc380f5cd9607839515c..da00525ca945e6443aa61ffe82a1f93ad0061e71 100644 (file)
--- a/black.py
+++ b/black.py
@@ -143,55 +143,46 @@ class FileMode(Flag):
     show_default=True,
 )
 @click.option(
-    "--check",
+    "--py36",
     is_flag=True,
     help=(
-        "Don't write the files back, just return the status.  Return code 0 "
-        "means nothing would change.  Return code 1 means some files would be "
-        "reformatted.  Return code 123 means there was an internal error."
+        "Allow using Python 3.6-only syntax on all input files.  This will put "
+        "trailing commas in function signatures and calls also after *args and "
+        "**kwargs.  [default: per-file auto-detection]"
     ),
 )
 @click.option(
-    "--diff",
-    is_flag=True,
-    help="Don't write the files back, just output a diff for each file on stdout.",
-)
-@click.option(
-    "--fast/--safe",
+    "--pyi",
     is_flag=True,
-    help="If --fast given, skip temporary sanity checks. [default: --safe]",
+    help=(
+        "Format all input files like typing stubs regardless of file extension "
+        "(useful when piping source on standard input)."
+    ),
 )
 @click.option(
-    "-q",
-    "--quiet",
+    "-S",
+    "--skip-string-normalization",
     is_flag=True,
-    help=(
-        "Don't emit non-error messages to stderr. Errors are still emitted, "
-        "silence those with 2>/dev/null."
-    ),
+    help="Don't normalize string quotes or prefixes.",
 )
 @click.option(
-    "--pyi",
+    "--check",
     is_flag=True,
     help=(
-        "Consider all input files typing stubs regardless of file extension "
-        "(useful when piping source on standard input)."
+        "Don't write the files back, just return the status.  Return code 0 "
+        "means nothing would change.  Return code 1 means some files would be "
+        "reformatted.  Return code 123 means there was an internal error."
     ),
 )
 @click.option(
-    "--py36",
+    "--diff",
     is_flag=True,
-    help=(
-        "Allow using Python 3.6-only syntax on all input files.  This will put "
-        "trailing commas in function signatures and calls also after *args and "
-        "**kwargs.  [default: per-file auto-detection]"
-    ),
+    help="Don't write the files back, just output a diff for each file on stdout.",
 )
 @click.option(
-    "-S",
-    "--skip-string-normalization",
+    "--fast/--safe",
     is_flag=True,
-    help="Don't normalize string quotes or prefixes.",
+    help="If --fast given, skip temporary sanity checks. [default: --safe]",
 )
 @click.option(
     "--include",
@@ -199,8 +190,10 @@ class FileMode(Flag):
     default=DEFAULT_INCLUDES,
     help=(
         "A regular expression that matches files and directories that should be "
-        "included on recursive searches. On Windows, use forward slashes for "
-        "directories."
+        "included on recursive searches.  An empty value means all files are "
+        "included regardless of the name.  Use forward slashes for directories on "
+        "all platforms (Windows, too).  Exclusions are calculated first, inclusions "
+        "later."
     ),
     show_default=True,
 )
@@ -210,11 +203,21 @@ class FileMode(Flag):
     default=DEFAULT_EXCLUDES,
     help=(
         "A regular expression that matches files and directories that should be "
-        "excluded on recursive searches. On Windows, use forward slashes for "
-        "directories."
+        "excluded on recursive searches.  An empty value means no paths are excluded. "
+        "Use forward slashes for directories on all platforms (Windows, too).  "
+        "Exclusions are calculated first, inclusions later."
     ),
     show_default=True,
 )
+@click.option(
+    "-q",
+    "--quiet",
+    is_flag=True,
+    help=(
+        "Don't emit non-error messages to stderr. Errors are still emitted, "
+        "silence those with 2>/dev/null."
+    ),
+)
 @click.version_option(version=__version__)
 @click.argument(
     "src",
@@ -339,8 +342,8 @@ def reformat_one(
             cache: Cache = {}
             if write_back != WriteBack.DIFF:
                 cache = read_cache(line_length, mode)
-                src = src.resolve()
-                if src in cache and cache[src] == get_cache_info(src):
+                res_src = src.resolve()
+                if res_src in cache and cache[res_src] == get_cache_info(res_src):
                     changed = Changed.CACHED
             if changed is not Changed.CACHED and format_file_in_place(
                 src,
@@ -2794,28 +2797,20 @@ def gen_python_files_in_dir(
     """Generate all files under `path` whose paths are not excluded by the
     `exclude` regex, but are included by the `include` regex.
     """
-
     for child in path.iterdir():
-        searchable_path = str(child.as_posix())
-        if Path(child.parts[0]).is_dir():
-            searchable_path = "/" + searchable_path
+        normalized_path = child.resolve().as_posix()
         if child.is_dir():
-            searchable_path = searchable_path + "/"
-            exclude_match = exclude.search(searchable_path)
-            if exclude_match and len(exclude_match.group()) > 0:
-                continue
+            normalized_path += "/"
+        exclude_match = exclude.search(normalized_path)
+        if exclude_match and exclude_match.group(0):
+            continue
 
+        if child.is_dir():
             yield from gen_python_files_in_dir(child, include, exclude)
 
-        else:
-            include_match = include.search(searchable_path)
-            exclude_match = exclude.search(searchable_path)
-            if (
-                child.is_file()
-                and include_match
-                and len(include_match.group()) > 0
-                and (not exclude_match or len(exclude_match.group()) == 0)
-            ):
+        elif child.is_file():
+            include_match = include.search(normalized_path)
+            if include_match:
                 yield child