#!/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()