Repository: ambv/black (python)

Issue:
remove py36
Hi,

With --target-version pushed, what's the point of keeping py36 for black ?
Considering it's been removed in blackd, it should be the same for black.



Pull request description:
remove --py36
Fixes #703.

Patch:
diff --git a/README.md b/README.md
index 57272ae..8df2f9e 100644
--- a/README.md
+++ b/README.md
@@ -77,11 +77,6 @@ Options:
                                   Python versions that should be supported by
                                   Black's output. [default: per-file auto-
                                   detection]
-  --py36                          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]
   --pyi                           Format all input files like typing stubs
                                   regardless of file extension (useful when
                                   piping source on standard input).
@@ -576,7 +571,7 @@ to denote a significant space character.
 ```toml
 [tool.black]
 line-length = 88
-py36 = true
+target_version = ['cpy37']
 include = '\.pyi?$'
 exclude = '''
 
@@ -944,6 +939,8 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md).
 
 ### 19.2b0
 
+* removed `--py36` (use `--target-version=cpy36` instead) (#724)
+
 * long `del` statements are now split into multiple lines (#698)
 
 * *Black* no longer normalizes numeric literals to include `_` separators (#696)
diff --git a/black.py b/black.py
index 8f50d3e..2850ae1 100644
--- a/black.py
+++ b/black.py
@@ -248,15 +248,6 @@ def read_pyproject_toml(
         "per-file auto-detection]"
     ),
 )
-@click.option(
-    "--py36",
-    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]"
-    ),
-)
 @click.option(
     "--pyi",
     is_flag=True,
@@ -360,7 +351,6 @@ def main(
     diff: bool,
     fast: bool,
     pyi: bool,
-    py36: bool,
     skip_string_normalization: bool,
     quiet: bool,
     verbose: bool,
@@ -372,13 +362,7 @@ def main(
     """The uncompromising code formatter."""
     write_back = WriteBack.from_configuration(check=check, diff=diff)
     if target_version:
-        if py36:
-            err(f"Cannot use both --target-version and --py36")
-            ctx.exit(2)
-        else:
-            versions = set(target_version)
-    elif py36:
-        versions = PY36_VERSIONS
+        versions = set(target_version)
     else:
         # We'll autodetect later.
         versions = set()
@@ -2446,8 +2430,8 @@ def delimiter_split(
 ) -> Iterator[Line]:
     """Split according to delimiters of the highest priority.
 
-    If `py36` is True, the split will add trailing commas also in function
-    signatures that contain `*` and `**`.
+    If `supports_trailing_commas` is True, the split will add trailing commas
+    also in function signatures that contain `*` and `**`.
     """
     try:
         last_leaf = line.leaves[-1]
diff --git a/pyproject.toml b/pyproject.toml
index fca5055..c42c33f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -7,7 +7,7 @@
 
 [tool.black]
 line-length = 88
-py36 = true
+target_version = ['cpy36', 'cpy37', 'cpy38']
 include = '\.pyi?$'
 exclude = '''
 /(


Test patch:
diff --git a/tests/test_black.py b/tests/test_black.py
index 3404e05..21a7f2d 100644
--- a/tests/test_black.py
+++ b/tests/test_black.py
@@ -43,6 +43,9 @@
 THIS_FILE = Path(__file__)
 THIS_DIR = THIS_FILE.parent
 EMPTY_LINE = "# EMPTY LINE WITH WHITESPACE" + " (this comment will be removed)"
+PY36_ARGS = [
+    f"--target-version={version.name.lower()}" for version in black.PY36_VERSIONS
+]
 T = TypeVar("T")
 R = TypeVar("R")
 
@@ -1160,10 +1163,10 @@ def test_single_file_force_py36(self) -> None:
             path = (workspace / "file.py").resolve()
             with open(path, "w") as fh:
                 fh.write(source)
-            self.invokeBlack([str(path), "--py36"])
+            self.invokeBlack([str(path), *PY36_ARGS])
             with open(path, "r") as fh:
                 actual = fh.read()
-            # verify cache with --py36 is separate
+            # verify cache with --target-version is separate
             py36_cache = black.read_cache(py36_mode)
             self.assertIn(path, py36_cache)
             normal_cache = black.read_cache(reg_mode)
@@ -1183,12 +1186,12 @@ def test_multi_file_force_py36(self) -> None:
             for path in paths:
                 with open(path, "w") as fh:
                     fh.write(source)
-            self.invokeBlack([str(p) for p in paths] + ["--py36"])
+            self.invokeBlack([str(p) for p in paths] + PY36_ARGS)
             for path in paths:
                 with open(path, "r") as fh:
                     actual = fh.read()
                 self.assertEqual(actual, expected)
-            # verify cache with --py36 is separate
+            # verify cache with --target-version is separate
             pyi_cache = black.read_cache(py36_mode)
             normal_cache = black.read_cache(reg_mode)
             for path in paths:
@@ -1198,7 +1201,9 @@ def test_multi_file_force_py36(self) -> None:
     def test_pipe_force_py36(self) -> None:
         source, expected = read_data("force_py36")
         result = CliRunner().invoke(
-            black.main, ["-", "-q", "--py36"], input=BytesIO(source.encode("utf8"))
+            black.main,
+            ["-", "-q", "--target-version=cpy36"],
+            input=BytesIO(source.encode("utf8")),
         )
         self.assertEqual(result.exit_code, 0)
         actual = result.output