晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/opt/cloudlinux/venv/lib64/python3.11/site-packages/dill/tests/ |
| Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/dill/tests/test_nested.py |
#!/usr/bin/env python
#
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
# Copyright (c) 2008-2016 California Institute of Technology.
# Copyright (c) 2016-2023 The Uncertainty Quantification Foundation.
# License: 3-clause BSD. The full license text is available at:
# - https://github.com/uqfoundation/dill/blob/master/LICENSE
"""
test dill's ability to handle nested functions
"""
import os
import math
import dill as pickle
pickle.settings['recurse'] = True
# the nested function: pickle should fail here, but dill is ok.
def adder(augend):
zero = [0]
def inner(addend):
return addend + augend + zero[0]
return inner
# rewrite the nested function using a class: standard pickle should work here.
class cadder(object):
def __init__(self, augend):
self.augend = augend
self.zero = [0]
def __call__(self, addend):
return addend + self.augend + self.zero[0]
# rewrite again, but as an old-style class
class c2adder:
def __init__(self, augend):
self.augend = augend
self.zero = [0]
def __call__(self, addend):
return addend + self.augend + self.zero[0]
# some basic class stuff
class basic(object):
pass
class basic2:
pass
x = 5
y = 1
def test_basic():
a = [0, 1, 2]
pa = pickle.dumps(a)
pmath = pickle.dumps(math) #XXX: FAILS in pickle
pmap = pickle.dumps(map)
# ...
la = pickle.loads(pa)
lmath = pickle.loads(pmath)
lmap = pickle.loads(pmap)
assert list(map(math.sin, a)) == list(lmap(lmath.sin, la))
def test_basic_class():
pbasic2 = pickle.dumps(basic2)
_pbasic2 = pickle.loads(pbasic2)()
pbasic = pickle.dumps(basic)
_pbasic = pickle.loads(pbasic)()
def test_c2adder():
pc2adder = pickle.dumps(c2adder)
pc2add5 = pickle.loads(pc2adder)(x)
assert pc2add5(y) == x+y
def test_pickled_cadder():
pcadder = pickle.dumps(cadder)
pcadd5 = pickle.loads(pcadder)(x)
assert pcadd5(y) == x+y
def test_raw_adder_and_inner():
add5 = adder(x)
assert add5(y) == x+y
def test_pickled_adder():
padder = pickle.dumps(adder)
padd5 = pickle.loads(padder)(x)
assert padd5(y) == x+y
def test_pickled_inner():
add5 = adder(x)
pinner = pickle.dumps(add5) #XXX: FAILS in pickle
p5add = pickle.loads(pinner)
assert p5add(y) == x+y
def test_moduledict_where_not_main():
try:
from . import test_moduledict
except ImportError:
import test_moduledict
name = 'test_moduledict.py'
if os.path.exists(name) and os.path.exists(name+'c'):
os.remove(name+'c')
if os.path.exists(name) and hasattr(test_moduledict, "__cached__") \
and os.path.exists(test_moduledict.__cached__):
os.remove(getattr(test_moduledict, "__cached__"))
if os.path.exists("__pycache__") and not os.listdir("__pycache__"):
os.removedirs("__pycache__")
if __name__ == '__main__':
test_basic()
test_basic_class()
test_c2adder()
test_pickled_cadder()
test_raw_adder_and_inner()
test_pickled_adder()
test_pickled_inner()
test_moduledict_where_not_main()
|