晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib/python3.11/site-packages/setoptconf/ |
| Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/setoptconf/datatype.py |
from .exception import DataTypeError
__all__ = ("DataType", "String", "Integer", "Float", "Boolean", "List", "Choice")
class DataType(object):
def sanitize(self, value):
raise NotImplementedError()
def is_valid(self, value):
try:
self.sanitize(value)
except DataTypeError:
return False
else:
return True
class String(DataType):
def sanitize(self, value):
return None if value is None else str(value)
class Integer(DataType):
def sanitize(self, value):
if value is not None:
try:
value = int(value)
except:
raise DataTypeError('"%s" is not valid Integer' % value)
return value
class Float(DataType):
def sanitize(self, value):
if value is not None:
try:
value = float(value)
except:
raise DataTypeError('"%s" is not valid Float' % value)
return value
class Boolean(DataType):
TRUTHY_STRINGS = ("Y", "YES", "T", "TRUE", "ON", "1")
FALSY_STRINGS = ("", "N", "NO", "F", "FALSE", "OFF", "0")
def sanitize(self, value):
if value is None or isinstance(value, bool):
return value
if isinstance(value, int):
return True if value else False
if isinstance(value, str) and value:
value = value.strip().upper()
if value in self.TRUTHY_STRINGS:
return True
elif value in self.FALSY_STRINGS:
return False
else:
raise DataTypeError('Could not coerce "%s" to a Boolean' % (value,))
return True if value else False
class List(DataType):
def __init__(self, subtype):
super(List, self).__init__()
if isinstance(subtype, DataType):
self.subtype = subtype
elif isinstance(subtype, type) and issubclass(subtype, DataType):
self.subtype = subtype()
else:
raise TypeError("subtype must be a DataType")
def sanitize(self, value):
if value is None:
return value
if not isinstance(value, (list, tuple)):
value = [value]
value = [self.subtype.sanitize(v) for v in value]
return value
class Choice(DataType):
def __init__(self, choices, subtype=None):
super(Choice, self).__init__()
subtype = subtype or String()
if isinstance(subtype, DataType):
self.subtype = subtype
elif isinstance(subtype, type) and issubclass(subtype, DataType):
self.subtype = subtype()
else:
raise TypeError("subtype must be a DataType")
self.choices = choices
def sanitize(self, value):
if value is None:
return value
value = self.subtype.sanitize(value)
if value not in self.choices:
raise DataTypeError(
'"%s" is not one of (%s)'
% (value, ", ".join([repr(c) for c in self.choices]))
)
return value
|