]>
git.madduck.net Git - etc/vim.git/commitdiff
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:
summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (parent:
57ab909 )
```
You'll find *Black*'s own .flake8 config file is configured like this.
```
You'll find *Black*'s own .flake8 config file is configured like this.
-If you're curious about the reasoning behind B950,
+If you're curious about the reasoning behind B950,
[Bugbear's documentation](https://github.com/PyCQA/flake8-bugbear#opinionated-warnings)
explains it. The tl;dr is "it's like highway speed limits, we won't
bother you if you overdo it by a few km/h".
[Bugbear's documentation](https://github.com/PyCQA/flake8-bugbear#opinionated-warnings)
explains it. The tl;dr is "it's like highway speed limits, we won't
bother you if you overdo it by a few km/h".
Wing supports black via the OS Commands tool, as explained in the Wing documentation on [pep8 formatting](https://wingware.com/doc/edit/pep8). The detailed procedure is:
Wing supports black via the OS Commands tool, as explained in the Wing documentation on [pep8 formatting](https://wingware.com/doc/edit/pep8). The detailed procedure is:
- click on **+** in **OS Commands** -> New: Command line..
- Title: black
- Command Line: black %s
- click on **+** in **OS Commands** -> New: Command line..
- Title: black
- Command Line: black %s
- - I/O Encoding: Use Default
+ - I/O Encoding: Use Default
- Key Binding: F1
- [x] Raise OS Commands when executed
- [x] Auto-save files before execution
- Key Binding: F1
- [x] Raise OS Commands when executed
- [x] Auto-save files before execution
- `HTTP 500`: If there was any kind of error while trying to format the input.
The response body contains a textual representation of the error.
- `HTTP 500`: If there was any kind of error while trying to format the input.
The response body contains a textual representation of the error.
+The response headers include a `X-Black-Version` header containing the version
+of *Black*.
+
## Version control integration
Use [pre-commit](https://pre-commit.com/). Once you [have it
## Version control integration
Use [pre-commit](https://pre-commit.com/). Once you [have it
* *Black* is now able to format Python code that uses positional-only
arguments (`/` as described in PEP-570) (#946)
* *Black* is now able to format Python code that uses positional-only
arguments (`/` as described in PEP-570) (#946)
+* `blackd` now returns the version of *Black* in the response headers (#1013)
+
import black
import click
import black
import click
+from _version import version as __version__
+
# This is used internally by tests to shut down the server prematurely
_stop_signal = asyncio.Event()
# This is used internally by tests to shut down the server prematurely
_stop_signal = asyncio.Event()
-VERSION_HEADER = "X-Protocol-Version"
+# Request headers
+PROTOCOL_VERSION_HEADER = "X-Protocol-Version"
LINE_LENGTH_HEADER = "X-Line-Length"
PYTHON_VARIANT_HEADER = "X-Python-Variant"
SKIP_STRING_NORMALIZATION_HEADER = "X-Skip-String-Normalization"
FAST_OR_SAFE_HEADER = "X-Fast-Or-Safe"
BLACK_HEADERS = [
LINE_LENGTH_HEADER = "X-Line-Length"
PYTHON_VARIANT_HEADER = "X-Python-Variant"
SKIP_STRING_NORMALIZATION_HEADER = "X-Skip-String-Normalization"
FAST_OR_SAFE_HEADER = "X-Fast-Or-Safe"
BLACK_HEADERS = [
+ PROTOCOL_ VERSION_HEADER,
LINE_LENGTH_HEADER,
PYTHON_VARIANT_HEADER,
SKIP_STRING_NORMALIZATION_HEADER,
FAST_OR_SAFE_HEADER,
]
LINE_LENGTH_HEADER,
PYTHON_VARIANT_HEADER,
SKIP_STRING_NORMALIZATION_HEADER,
FAST_OR_SAFE_HEADER,
]
+# Response headers
+BLACK_VERSION_HEADER = "X-Black-Version"
+
class InvalidVariantHeader(Exception):
pass
class InvalidVariantHeader(Exception):
pass
async def handle(request: web.Request, executor: Executor) -> web.Response:
async def handle(request: web.Request, executor: Executor) -> web.Response:
+ headers = {BLACK_VERSION_HEADER: __version__}
- if request.headers.get(VERSION_HEADER, "1") != "1":
+ if request.headers.get(PROTOCOL_ VERSION_HEADER, "1") != "1":
return web.Response(
status=501, text="This server only supports protocol version 1"
)
return web.Response(
status=501, text="This server only supports protocol version 1"
)
executor, partial(black.format_file_contents, req_str, fast=fast, mode=mode)
)
return web.Response(
executor, partial(black.format_file_contents, req_str, fast=fast, mode=mode)
)
return web.Response(
- content_type=request.content_type, charset=charset, text=formatted_str
+ content_type=request.content_type,
+ charset=charset,
+ headers=headers,
+ text=formatted_str,
)
except black.NothingChanged:
)
except black.NothingChanged:
- return web.Response(status=204)
+ return web.Response(status=204, headers=headers )
except black.InvalidInput as e:
except black.InvalidInput as e:
- return web.Response(status=400, text=str(e))
+ return web.Response(status=400, headers=headers, text=str(e))
except Exception as e:
logging.exception("Exception during handling a request")
except Exception as e:
logging.exception("Exception during handling a request")
- return web.Response(status=500, text=str(e))
+ return web.Response(status=500, headers=headers, text=str(e))
def parse_python_variant_header(value: str) -> Tuple[bool, Set[black.TargetVersion]]:
def parse_python_variant_header(value: str) -> Tuple[bool, Set[black.TargetVersion]]:
@unittest_run_loop
async def test_blackd_unsupported_version(self) -> None:
response = await self.client.post(
@unittest_run_loop
async def test_blackd_unsupported_version(self) -> None:
response = await self.client.post(
- "/", data=b"what", headers={blackd.VERSION_HEADER: "2"}
+ "/", data=b"what", headers={blackd.PROTOCOL_ VERSION_HEADER: "2"}
)
self.assertEqual(response.status, 501)
)
self.assertEqual(response.status, 501)
@unittest_run_loop
async def test_blackd_supported_version(self) -> None:
response = await self.client.post(
@unittest_run_loop
async def test_blackd_supported_version(self) -> None:
response = await self.client.post(
- "/", data=b"what", headers={blackd.VERSION_HEADER: "1"}
+ "/", data=b"what", headers={blackd.PROTOCOL_ VERSION_HEADER: "1"}
)
self.assertEqual(response.status, 200)
)
self.assertEqual(response.status, 200)
)
self.assertEqual(response.status, 400)
)
self.assertEqual(response.status, 400)
+ @skip_if_exception("ClientOSError")
+ @unittest.skipUnless(has_blackd_deps, "blackd's dependencies are not installed")
+ @unittest_run_loop
+ async def test_blackd_response_black_version_header(self) -> None:
+ response = await self.client.post("/")
+ self.assertIsNotNone(response.headers.get(blackd.BLACK_VERSION_HEADER))
+
if __name__ == "__main__":
unittest.main(module="test_black")
if __name__ == "__main__":
unittest.main(module="test_black")