晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 sh-3ll

HOME


sh-3ll 1.0
DIR:/lib/python3.8/site-packages/pip/_vendor/pytoml/
Upload File :
Current File : //lib/python3.8/site-packages/pip/_vendor/pytoml/utils.py
import datetime
import re

rfc3339_re = re.compile(r'(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(?:Z|([+-]\d{2}):(\d{2}))')

def parse_rfc3339(v):
    m = rfc3339_re.match(v)
    if not m or m.group(0) != v:
        return None
    return parse_rfc3339_re(m)

def parse_rfc3339_re(m):
    r = map(int, m.groups()[:6])
    if m.group(7):
        micro = float(m.group(7))
    else:
        micro = 0

    if m.group(8):
        g = int(m.group(8), 10) * 60 + int(m.group(9), 10)
        tz = _TimeZone(datetime.timedelta(0, g * 60))
    else:
        tz = _TimeZone(datetime.timedelta(0, 0))

    y, m, d, H, M, S = r
    return datetime.datetime(y, m, d, H, M, S, int(micro * 1000000), tz)


def format_rfc3339(v):
    offs = v.utcoffset()
    offs = int(offs.total_seconds()) // 60 if offs is not None else 0

    if offs == 0:
        suffix = 'Z'
    else:
        if offs > 0:
            suffix = '+'
        else:
            suffix = '-'
            offs = -offs
        suffix = '{0}{1:02}:{2:02}'.format(suffix, offs // 60, offs % 60)

    if v.microsecond:
        return v.strftime('%Y-%m-%dT%H:%M:%S.%f') + suffix
    else:
        return v.strftime('%Y-%m-%dT%H:%M:%S') + suffix

class _TimeZone(datetime.tzinfo):
    def __init__(self, offset):
        self._offset = offset

    def utcoffset(self, dt):
        return self._offset

    def dst(self, dt):
        return None

    def tzname(self, dt):
        m = self._offset.total_seconds() // 60
        if m < 0:
            res = '-'
            m = -m
        else:
            res = '+'
        h = m // 60
        m = m - h * 60
        return '{}{:.02}{:.02}'.format(res, h, m)