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).
```toml
[tool.black]
line-length = 88
-py36 = true
+target_version = ['cpy37']
include = '\.pyi?$'
exclude = '''
### 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)
"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,
diff: bool,
fast: bool,
pyi: bool,
- py36: bool,
skip_string_normalization: bool,
quiet: bool,
verbose: bool,
"""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()
) -> 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]
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")
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)
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:
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