Tipragot
628be439b8
Cela permet de ne pas avoir de problèmes de compatibilité car python est dans le git.
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
|
|
# Author: Anirudh Vegesana (avegesan@cs.stanford.edu)
|
|
# Copyright (c) 2021-2023 The Uncertainty Quantification Foundation.
|
|
# License: 3-clause BSD. The full license text is available at:
|
|
# - https://github.com/uqfoundation/dill/blob/master/LICENSE
|
|
|
|
import dill
|
|
from dill._dill import OLD310, MAPPING_PROXY_TRICK, DictProxyType
|
|
|
|
def test_dictproxy():
|
|
assert dill.copy(DictProxyType({'a': 2}))
|
|
|
|
def test_dictviews():
|
|
x = {'a': 1}
|
|
assert dill.copy(x.keys())
|
|
assert dill.copy(x.values())
|
|
assert dill.copy(x.items())
|
|
|
|
def test_dictproxy_trick():
|
|
if not OLD310 and MAPPING_PROXY_TRICK:
|
|
x = {'a': 1}
|
|
all_views = (x.values(), x.items(), x.keys(), x)
|
|
seperate_views = dill.copy(all_views)
|
|
new_x = seperate_views[-1]
|
|
new_x['b'] = 2
|
|
new_x['c'] = 1
|
|
assert len(new_x) == 3 and len(x) == 1
|
|
assert len(seperate_views[0]) == 3 and len(all_views[0]) == 1
|
|
assert len(seperate_views[1]) == 3 and len(all_views[1]) == 1
|
|
assert len(seperate_views[2]) == 3 and len(all_views[2]) == 1
|
|
assert dict(all_views[1]) == x
|
|
assert dict(seperate_views[1]) == new_x
|
|
|
|
if __name__ == '__main__':
|
|
test_dictproxy()
|
|
test_dictviews()
|
|
test_dictproxy_trick()
|