dotfiles/vscode/.vscode/extensions/ms-python.black-formatter-2024.2.0/bundled/tool/lsp_io.py
Errol Sancaktar ff17c17e23 vscode
2024-06-14 09:31:58 -06:00

33 lines
997 B
Python

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
"""IO handling to communicate with LSP client."""
import argparse
import contextlib
import socket
import sys
from typing import Optional, Sequence
def parse_args(args: Optional[Sequence[str]] = None) -> argparse.Namespace:
"""Parse command line arguments."""
parser = argparse.ArgumentParser()
parser.add_argument("--stdio", action="store_true")
parser.add_argument("--socket", type=int, default=None)
parser.add_argument("--pipe", type=str, default=None)
parser.add_argument("--clientProcessId", type=int, default=None)
return parser.parse_args(args)
@contextlib.contextmanager
def use_pipe(pipe_name: str):
if sys.platform == "win32":
with open(pipe_name, "r+b") as f:
yield (f, f)
else:
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect(pipe_name)
f = sock.makefile("rwb")
yield (f, f)