This file is indexed.

/usr/lib/python2.7/dist-packages/traits/tests/test_trait_list_dict.py is in python-traits 4.6.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
##############################################################################
# Copyright 2014 Enthought, Inc.
##############################################################################

""" Test the persistence behavior of TraitListObjects, TraitDictObjects and
TraitSetObjects.
"""

from __future__ import absolute_import

import copy
from cPickle import dumps, loads

from ..has_traits import HasTraits, on_trait_change
from ..trait_types import Dict, List, Set, Str, Int, Instance


class A(HasTraits):
    alist = List(Int, range(5))
    adict = Dict(Str, Int, dict(a=1, b=2))
    aset = Set(Int, range(5))

    events = List()

    @on_trait_change('alist_items,adict_items,aset_items')
    def _receive_events(self, object, name, old, new):
        self.events.append((name, new))


class B(HasTraits):
    dict = Dict(Str, Instance(A))


def test_trait_list_object_persists():
    a = A()
    list = loads(dumps(a.alist))
    assert list.object() is None
    list.append(10)
    assert len(a.events) == 0
    a.alist.append(20)
    assert len(a.events) == 1
    list2 = loads(dumps(list))
    assert list2.object() is None


def test_trait_dict_object_persists():
    a = A()
    dict = loads(dumps(a.adict))
    assert dict.object() is None
    dict['key'] = 10
    assert len(a.events) == 0
    a.adict['key'] = 10
    assert len(a.events) == 1
    dict2 = loads(dumps(dict))
    assert dict2.object() is None


def test_trait_set_object_persists():
    a = A()
    set = loads(dumps(a.aset))
    assert set.object() is None
    set.add(10)
    assert len(a.events) == 0
    a.aset.add(20)
    assert len(a.events) == 1
    set2 = loads(dumps(set))
    assert set2.object() is None


def test_trait_list_object_copies():
    a = A()
    list = copy.deepcopy(a.alist)
    assert list.object() is None
    list.append(10)
    assert len(a.events) == 0
    a.alist.append(20)
    assert len(a.events) == 1
    list2 = copy.deepcopy(list)
    list2.append(30)
    assert list2.object() is None


def test_trait_dict_object_copies():
    a = A()
    dict = copy.deepcopy(a.adict)
    assert dict.object() is None
    dict['key'] = 10
    assert len(a.events) == 0
    a.adict['key'] = 10
    assert len(a.events) == 1
    dict2 = copy.deepcopy(dict)
    dict2['key2'] = 20
    assert dict2.object() is None


def test_trait_set_object_copies():
    a = A()
    set1 = copy.deepcopy(a.aset)
    assert set1.object() is None
    set1.add(10)
    assert len(a.events) == 0
    a.aset.add(20)
    assert len(a.events) == 1
    set2 = copy.deepcopy(set1)
    set2.add(30)
    assert set2.object() is None
    set3 = a.aset.copy()
    assert type(set3) is set
    # Should not raise an AttributeError:
    set3.remove(20)


def test_pickle_whole():
    a = A()
    loads(dumps(a))
    b = B(dict=dict(a=a))
    loads(dumps(b))


def test_trait_set_object_operations():
    # Regression test for update methods not coercing in the same way as
    # standard set objects (github issue #288)
    a = A()
    a.aset.update({10: 'a'})
    assert a.aset == set([0, 1, 2, 3, 4, 10])
    a.aset.intersection_update({3: 'b', 4: 'b', 10: 'a', 11: 'b'})
    assert a.aset == set([3, 4, 10])
    a.aset.difference_update({10: 'a', 11: 'b'})
    assert a.aset == set([3, 4])
    a.aset.symmetric_difference_update({10: 'a', 4: 'b'})
    assert a.aset == set([3, 10])


def test_trait_set_object_inplace():
    a = A()
    a.aset |= set([10])
    assert a.aset == set([0, 1, 2, 3, 4, 10])
    a.aset &= set([3, 4, 10, 11])
    assert a.aset == set([3, 4, 10])
    a.aset -= set([10, 11])
    assert a.aset == set([3, 4])
    a.aset ^= set([10, 4])
    assert a.aset == set([3, 10])