add preview option support for blackd (#3217)
Fixes #3195 Co-authored-by: Richard Si <63936253+ichard26@users.noreply.github.com>
This commit is contained in:
parent
680cbe3a4f
commit
07b68e2425
@ -20,6 +20,7 @@ Multiple contributions by:
|
|||||||
- [Adam Johnson](mailto:me@adamj.eu)
|
- [Adam Johnson](mailto:me@adamj.eu)
|
||||||
- [Adam Williamson](mailto:adamw@happyassassin.net)
|
- [Adam Williamson](mailto:adamw@happyassassin.net)
|
||||||
- [Alexander Huynh](mailto:github@grande.coffee)
|
- [Alexander Huynh](mailto:github@grande.coffee)
|
||||||
|
- [Alexandr Artemyev](mailto:mogost@gmail.com)
|
||||||
- [Alex Vandiver](mailto:github@chmrr.net)
|
- [Alex Vandiver](mailto:github@chmrr.net)
|
||||||
- [Allan Simon](mailto:allan.simon@supinfo.com)
|
- [Allan Simon](mailto:allan.simon@supinfo.com)
|
||||||
- Anders-Petter Ljungquist
|
- Anders-Petter Ljungquist
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
|
|
||||||
<!-- Changes to blackd -->
|
<!-- Changes to blackd -->
|
||||||
|
|
||||||
|
- `blackd` now supports preview style via `X-Preview` header (#3217)
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
|
|
||||||
<!-- Changes to how Black can be configured -->
|
<!-- Changes to how Black can be configured -->
|
||||||
|
@ -54,8 +54,11 @@ The headers controlling how source code is formatted are:
|
|||||||
command line flag. If present and its value is not the empty string, no string
|
command line flag. If present and its value is not the empty string, no string
|
||||||
normalization will be performed.
|
normalization will be performed.
|
||||||
- `X-Skip-Magic-Trailing-Comma`: corresponds to the `--skip-magic-trailing-comma`
|
- `X-Skip-Magic-Trailing-Comma`: corresponds to the `--skip-magic-trailing-comma`
|
||||||
command line flag. If present and its value is not the empty string, trailing commas
|
command line flag. If present and its value is not an empty string, trailing commas
|
||||||
will not be used as a reason to split lines.
|
will not be used as a reason to split lines.
|
||||||
|
- `X-Preview`: corresponds to the `--preview` command line flag. If present and its
|
||||||
|
value is not an empty string, experimental and potentially disruptive style changes
|
||||||
|
will be used.
|
||||||
- `X-Fast-Or-Safe`: if set to `fast`, `blackd` will act as _Black_ does when passed the
|
- `X-Fast-Or-Safe`: if set to `fast`, `blackd` will act as _Black_ does when passed the
|
||||||
`--fast` command line flag.
|
`--fast` command line flag.
|
||||||
- `X-Python-Variant`: if set to `pyi`, `blackd` will act as _Black_ does when passed the
|
- `X-Python-Variant`: if set to `pyi`, `blackd` will act as _Black_ does when passed the
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
PYTHON_VARIANT_HEADER = "X-Python-Variant"
|
PYTHON_VARIANT_HEADER = "X-Python-Variant"
|
||||||
SKIP_STRING_NORMALIZATION_HEADER = "X-Skip-String-Normalization"
|
SKIP_STRING_NORMALIZATION_HEADER = "X-Skip-String-Normalization"
|
||||||
SKIP_MAGIC_TRAILING_COMMA = "X-Skip-Magic-Trailing-Comma"
|
SKIP_MAGIC_TRAILING_COMMA = "X-Skip-Magic-Trailing-Comma"
|
||||||
|
PREVIEW = "X-Preview"
|
||||||
FAST_OR_SAFE_HEADER = "X-Fast-Or-Safe"
|
FAST_OR_SAFE_HEADER = "X-Fast-Or-Safe"
|
||||||
DIFF_HEADER = "X-Diff"
|
DIFF_HEADER = "X-Diff"
|
||||||
|
|
||||||
@ -41,6 +42,7 @@
|
|||||||
PYTHON_VARIANT_HEADER,
|
PYTHON_VARIANT_HEADER,
|
||||||
SKIP_STRING_NORMALIZATION_HEADER,
|
SKIP_STRING_NORMALIZATION_HEADER,
|
||||||
SKIP_MAGIC_TRAILING_COMMA,
|
SKIP_MAGIC_TRAILING_COMMA,
|
||||||
|
PREVIEW,
|
||||||
FAST_OR_SAFE_HEADER,
|
FAST_OR_SAFE_HEADER,
|
||||||
DIFF_HEADER,
|
DIFF_HEADER,
|
||||||
]
|
]
|
||||||
@ -109,6 +111,7 @@ async def handle(request: web.Request, executor: Executor) -> web.Response:
|
|||||||
skip_magic_trailing_comma = bool(
|
skip_magic_trailing_comma = bool(
|
||||||
request.headers.get(SKIP_MAGIC_TRAILING_COMMA, False)
|
request.headers.get(SKIP_MAGIC_TRAILING_COMMA, False)
|
||||||
)
|
)
|
||||||
|
preview = bool(request.headers.get(PREVIEW, False))
|
||||||
fast = False
|
fast = False
|
||||||
if request.headers.get(FAST_OR_SAFE_HEADER, "safe") == "fast":
|
if request.headers.get(FAST_OR_SAFE_HEADER, "safe") == "fast":
|
||||||
fast = True
|
fast = True
|
||||||
@ -118,6 +121,7 @@ async def handle(request: web.Request, executor: Executor) -> web.Response:
|
|||||||
line_length=line_length,
|
line_length=line_length,
|
||||||
string_normalization=not skip_string_normalization,
|
string_normalization=not skip_string_normalization,
|
||||||
magic_trailing_comma=not skip_magic_trailing_comma,
|
magic_trailing_comma=not skip_magic_trailing_comma,
|
||||||
|
preview=preview,
|
||||||
)
|
)
|
||||||
req_bytes = await request.content.read()
|
req_bytes = await request.content.read()
|
||||||
charset = request.charset if request.charset is not None else "utf8"
|
charset = request.charset if request.charset is not None else "utf8"
|
||||||
|
@ -167,6 +167,13 @@ async def test_blackd_invalid_line_length(self) -> None:
|
|||||||
)
|
)
|
||||||
self.assertEqual(response.status, 400)
|
self.assertEqual(response.status, 400)
|
||||||
|
|
||||||
|
@unittest_run_loop
|
||||||
|
async def test_blackd_preview(self) -> None:
|
||||||
|
response = await self.client.post(
|
||||||
|
"/", data=b'print("hello")\n', headers={blackd.PREVIEW: "true"}
|
||||||
|
)
|
||||||
|
self.assertEqual(response.status, 204)
|
||||||
|
|
||||||
@unittest_run_loop
|
@unittest_run_loop
|
||||||
async def test_blackd_response_black_version_header(self) -> None:
|
async def test_blackd_response_black_version_header(self) -> None:
|
||||||
response = await self.client.post("/")
|
response = await self.client.post("/")
|
||||||
|
Loading…
Reference in New Issue
Block a user