Refactor code structure for improved readability and maintainability
This commit is contained in:
parent
389d72a136
commit
aa4c067ea8
1685 changed files with 393439 additions and 71932 deletions
92
.venv_codegen/Lib/site-packages/blackd/client.py
Normal file
92
.venv_codegen/Lib/site-packages/blackd/client.py
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
import aiohttp
|
||||
from aiohttp.typedefs import StrOrURL
|
||||
|
||||
import black
|
||||
|
||||
_DEFAULT_HEADERS = {"Content-Type": "text/plain; charset=utf-8"}
|
||||
|
||||
|
||||
class BlackDClient:
|
||||
def __init__(
|
||||
self,
|
||||
url: StrOrURL = "http://localhost:9090",
|
||||
line_length: int | None = None,
|
||||
skip_source_first_line: bool = False,
|
||||
skip_string_normalization: bool = False,
|
||||
skip_magic_trailing_comma: bool = False,
|
||||
preview: bool = False,
|
||||
fast: bool = False,
|
||||
python_variant: str | None = None,
|
||||
diff: bool = False,
|
||||
headers: dict[str, str] | None = None,
|
||||
):
|
||||
"""
|
||||
Initialize a BlackDClient object.
|
||||
:param url: The URL of the BlackD server.
|
||||
:param line_length: The maximum line length.
|
||||
Corresponds to the ``--line-length`` CLI option.
|
||||
:param skip_source_first_line: True to skip the first line of the source.
|
||||
Corresponds to the ``--skip-source-first-line`` CLI option.
|
||||
:param skip_string_normalization: True to skip string normalization.
|
||||
Corresponds to the ``--skip-string-normalization`` CLI option.
|
||||
:param skip_magic_trailing_comma: True to skip magic trailing comma.
|
||||
Corresponds to the ``--skip-magic-trailing-comma`` CLI option.
|
||||
:param preview: True to enable experimental preview mode.
|
||||
Corresponds to the ``--preview`` CLI option.
|
||||
:param fast: True to enable fast mode.
|
||||
Corresponds to the ``--fast`` CLI option.
|
||||
:param python_variant: The Python variant to use.
|
||||
Corresponds to the ``--pyi`` CLI option if this is "pyi".
|
||||
Otherwise, corresponds to the ``--target-version`` CLI option.
|
||||
:param diff: True to enable diff mode.
|
||||
Corresponds to the ``--diff`` CLI option.
|
||||
:param headers: A dictionary of additional custom headers to send with
|
||||
the request.
|
||||
"""
|
||||
self.url = url
|
||||
self.headers = _DEFAULT_HEADERS.copy()
|
||||
|
||||
if line_length is not None:
|
||||
self.headers["X-Line-Length"] = str(line_length)
|
||||
if skip_source_first_line:
|
||||
self.headers["X-Skip-Source-First-Line"] = "yes"
|
||||
if skip_string_normalization:
|
||||
self.headers["X-Skip-String-Normalization"] = "yes"
|
||||
if skip_magic_trailing_comma:
|
||||
self.headers["X-Skip-Magic-Trailing-Comma"] = "yes"
|
||||
if preview:
|
||||
self.headers["X-Preview"] = "yes"
|
||||
if fast:
|
||||
self.headers["X-Fast-Or-Safe"] = "fast"
|
||||
if python_variant is not None:
|
||||
self.headers["X-Python-Variant"] = python_variant
|
||||
if diff:
|
||||
self.headers["X-Diff"] = "yes"
|
||||
|
||||
if headers is not None:
|
||||
self.headers.update(headers)
|
||||
|
||||
async def format_code(self, unformatted_code: str) -> str:
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.post(
|
||||
self.url, headers=self.headers, data=unformatted_code.encode("utf-8")
|
||||
) as response:
|
||||
if response.status == 204:
|
||||
# Input is already well-formatted
|
||||
return unformatted_code
|
||||
elif response.status == 200:
|
||||
# Formatting was needed
|
||||
return await response.text()
|
||||
elif response.status == 400:
|
||||
# Input contains a syntax error
|
||||
error_message = await response.text()
|
||||
raise black.InvalidInput(error_message)
|
||||
elif response.status == 500:
|
||||
# Other kind of error while formatting
|
||||
error_message = await response.text()
|
||||
raise RuntimeError(f"Error while formatting: {error_message}")
|
||||
else:
|
||||
# Unexpected response status code
|
||||
raise RuntimeError(
|
||||
f"Unexpected response status code: {response.status}"
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue