晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib/python3.11/site-packages/pylint/testutils/_primer/ |
| Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/pylint/testutils/_primer/primer.py |
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
from pylint.testutils._primer import PackageToLint
from pylint.testutils._primer.primer_command import PrimerCommand
from pylint.testutils._primer.primer_compare_command import CompareCommand
from pylint.testutils._primer.primer_prepare_command import PrepareCommand
from pylint.testutils._primer.primer_run_command import RunCommand
class Primer:
"""Main class to handle priming of packages."""
def __init__(self, primer_directory: Path, json_path: Path) -> None:
# Preparing arguments
self.primer_directory = primer_directory
self._argument_parser = argparse.ArgumentParser(prog="Pylint Primer")
self._subparsers = self._argument_parser.add_subparsers(
dest="command", required=True
)
# All arguments for the prepare parser
prepare_parser = self._subparsers.add_parser("prepare")
prepare_parser.add_argument(
"--clone", help="Clone all packages.", action="store_true", default=False
)
prepare_parser.add_argument(
"--check",
help="Check consistencies and commits of all packages.",
action="store_true",
default=False,
)
prepare_parser.add_argument(
"--make-commit-string",
help="Get latest commit string.",
action="store_true",
default=False,
)
prepare_parser.add_argument(
"--read-commit-string",
help="Print latest commit string.",
action="store_true",
default=False,
)
# All arguments for the run parser
run_parser = self._subparsers.add_parser("run")
run_parser.add_argument(
"--type", choices=["main", "pr"], required=True, help="Type of primer run."
)
# All arguments for the compare parser
compare_parser = self._subparsers.add_parser("compare")
compare_parser.add_argument(
"--base-file",
required=True,
help="Location of output file of the base run.",
)
compare_parser.add_argument(
"--new-file",
required=True,
help="Location of output file of the new run.",
)
compare_parser.add_argument(
"--commit",
required=True,
help="Commit hash of the PR commit being checked.",
)
# Storing arguments
self.config = self._argument_parser.parse_args()
self.packages = self._get_packages_to_lint_from_json(json_path)
"""All packages to prime."""
if self.config.command == "prepare":
command_class: type[PrimerCommand] = PrepareCommand
elif self.config.command == "run":
command_class = RunCommand
elif self.config.command == "compare":
command_class = CompareCommand
self.command = command_class(self.primer_directory, self.packages, self.config)
def run(self) -> None:
self.command.run()
@staticmethod
def _minimum_python_supported(package_data: dict[str, str]) -> bool:
min_python_str = package_data.get("minimum_python", None)
if not min_python_str:
return True
min_python_tuple = tuple(int(n) for n in min_python_str.split("."))
return min_python_tuple <= sys.version_info[:2]
@staticmethod
def _get_packages_to_lint_from_json(json_path: Path) -> dict[str, PackageToLint]:
with open(json_path, encoding="utf8") as f:
return {
name: PackageToLint(**package_data)
for name, package_data in json.load(f).items()
if Primer._minimum_python_supported(package_data)
}
|