晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib/python3.11/site-packages/pytest_check/ |
| Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/pytest_check/context_manager.py |
from __future__ import annotations
import warnings
import traceback
from types import TracebackType
from typing import Callable, Type
from . import check_log
from .check_log import log_failure
_stop_on_fail = False
# This class has grown into much more than just a context manager.
# it's really the interface into the system.
# TODO: maybe rename it
# TODO: maybe pull in extra functionality here instead of in plugin.py
class CheckContextManager:
def __init__(self) -> None:
self.msg: object = None
def __enter__(self) -> "CheckContextManager":
return self
def __exit__(
self,
exc_type: Type[BaseException] | None,
exc_val: BaseException | None,
exc_tb: TracebackType | None,
) -> bool | None:
__tracebackhide__ = True
if exc_type is not None and issubclass(exc_type, AssertionError):
if _stop_on_fail:
self.msg = None
return None
else:
fmt_tb = traceback.format_exception(exc_type, exc_val, exc_tb)
if self.msg is not None:
log_failure(f"{exc_val}, {self.msg}", tb=fmt_tb)
else:
log_failure(exc_val, tb=fmt_tb)
self.msg = None
return True
self.msg = None
return None
def __call__(self, msg: object = None) -> "CheckContextManager":
self.msg = msg
return self
def set_no_tb(self) -> None:
warnings.warn(
"set_no_tb() is deprecated; use set_max_tb(0)", DeprecationWarning
)
check_log._max_tb = 0
def set_max_fail(self, x: int) -> None:
check_log._max_fail = x
def set_max_report(self, x: int) -> None:
check_log._max_report = x
def set_max_tb(self, x: int) -> None:
check_log._max_tb = x
def call_on_fail(self, func: Callable[[str], None]) -> None:
"""Experimental feature - may change with any release"""
check_log._fail_function = func
check = CheckContextManager()
|