晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib/python3.11/site-packages/prospector/tools/pyright/ |
| Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/prospector/tools/pyright/__init__.py |
import json
import subprocess
import pyright
from prospector.message import Location, Message
from prospector.tools import ToolBase
__all__ = ("PyrightTool",)
from prospector.tools.exceptions import BadToolConfig
VALID_OPTIONS = [
"level",
"project",
"pythonplatform",
"pythonversion",
"skipunannotated",
"typeshed-path",
"venv-path",
]
def format_messages(json_encoded):
json_decoded = json.loads(json_encoded)
diagnostics = json_decoded.get("generalDiagnostics", [])
messages = []
for diag in diagnostics:
start_range = diag.get("range", {}).get("start", {})
location = Location(
path=diag["file"],
module=None,
function=None,
line=start_range.get("line", -1),
character=start_range.get("character", -1),
)
messages.append(
Message(source="pyright", code=diag.get("rule", ""), location=location, message=diag.get("message", ""))
)
return messages
class PyrightTool(ToolBase):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.checker = pyright
self.options = ["--outputjson"]
def configure(self, prospector_config, _):
options = prospector_config.tool_options("pyright")
for option_key in options.keys():
if option_key not in VALID_OPTIONS:
url = "https://github.com/PyCQA/prospector/blob/master/prospector/tools/pyright/__init__.py"
raise BadToolConfig(
"pyright", f"Option {option_key} is not valid. " f"See the list of possible options: {url}"
)
level = options.get("level", None)
project = options.get("project", None)
pythonplatform = options.get("pythonplatform", None)
pythonversion = options.get("pythonversion", None)
skipunannotated = options.get("skipunannotated", False)
typeshed_path = options.get("typeshed-path", None)
venv_path = options.get("venv-path", None)
if level:
self.options.extend(["--level", level])
if project:
self.options.extend(["--project", project])
if pythonplatform:
self.options.extend(["--pythonplatform", pythonplatform])
if pythonversion:
self.options.extend(["--pythonversion", pythonversion])
if skipunannotated:
self.options.append("--skipunannotated")
if typeshed_path:
self.options.extend(["--typeshed-path", typeshed_path])
if venv_path:
self.options.extend(["--venv-path", venv_path])
def run(self, found_files):
paths = [str(path) for path in found_files.python_modules]
paths.extend(self.options)
result = self.checker.run(*paths, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
return format_messages(result.stdout)
|