This file is indexed.

/usr/lib/python3/dist-packages/pydap/tests/test_iter_data.py is in python3-pydap 3.2.2+ds1-1ubuntu1.

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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
"""Test IterData, which makes iterables behave like Numpy structured arrays."""

import numpy as np
from pydap.handlers.lib import IterData
from pydap.model import DatasetType, SequenceType, BaseType
import sys
import pytest


@pytest.fixture
def simple_array():
    arr = np.array([
            (0, 1, 10.),
            (1, 2, 20.),
            (2, 3, 30.),
            (3, 4, 40.),
            (4, 5, 50.),
            (5, 6, 60.),
            (6, 7, 70.),
            (7, 8, 80.),
        ], dtype=[('byte', 'b'), ('int', 'i4'), ('float', 'f4')])
    return arr


@pytest.fixture
def simple_object(simple_array):
    # add sequence and children for each column
    name = 'nameless'
    dataset = DatasetType(name)
    seq = dataset['sequence'] = SequenceType('sequence')
    for var in simple_array.dtype.names:
        seq[var] = BaseType(var)

    obj = IterData([(0, 1, 10.),
                    (1, 2, 20.),
                    (2, 3, 30.),
                    (3, 4, 40.),
                    (4, 5, 50.),
                    (5, 6, 60.),
                    (6, 7, 70.),
                    (7, 8, 80.)],
                   seq)
    return obj


def test_iter(simple_array, simple_object):
    assert ([tuple(row)
             for row in simple_array] ==
            [(0, 1, 10.), (1, 2, 20.),
             (2, 3, 30.), (3, 4, 40.),
             (4, 5, 50.), (5, 6, 60.),
             (6, 7, 70.), (7, 8, 80.)])
    assert (list(simple_array["byte"]) ==
            [0, 1, 2, 3, 4, 5, 6, 7])

    assert ([tuple(row) for row in simple_object] ==
            [(0, 1, 10.), (1, 2, 20.),
             (2, 3, 30.), (3, 4, 40.),
             (4, 5, 50.), (5, 6, 60.),
             (6, 7, 70.), (7, 8, 80.)])
    assert (list(simple_object["byte"]) ==
            [0, 1, 2, 3, 4, 5, 6, 7])


little_endian = pytest.mark.skipif(sys.byteorder != 'little', reason="assumes little endian")
intfour = pytest.mark.skipif(sys.int_info[1] != 4, reason="assumes sizeof_digit is four")

@little_endian
@intfour
def test_dtype(simple_array, simple_object):
    assert (
        simple_array.dtype ==
        np.dtype([('byte', 'i1'), ('int', '<i4'), ('float', '<f4')]))
    assert (simple_array["int"].dtype == "<i4")

    assert (
        simple_object.dtype ==
        np.dtype([('byte', '<i8'), ('int', '<i8'), ('float', '<f8')]))
    assert (simple_object["int"].dtype == "<i8")


def test_selection(simple_array, simple_object):
    selection = simple_array[simple_array["byte"] > 3]
    assert ([tuple(row) for row in selection] ==
            [(4, 5, 50.), (5, 6, 60.),
             (6, 7, 70.), (7, 8, 80.)])

    selection = simple_object[simple_object["byte"] > 3]
    assert ([tuple(row) for row in selection] ==
            [(4, 5, 50.), (5, 6, 60.),
             (6, 7, 70.), (7, 8, 80.)])


def test_projection(simple_array, simple_object):
    projection = simple_array[1::2]
    assert ([tuple(row) for row in projection] ==
            [(1, 2, 20.), (3, 4, 40.),
             (5, 6, 60.), (7, 8, 80.)])
    assert (
        list(simple_array["byte"][1::2]) == [1, 3, 5, 7])
    assert (
        list(simple_array[1::2]["byte"]) == [1, 3, 5, 7])

    projection = simple_object[1::2]
    assert ([tuple(row) for row in projection] ==
            [(1, 2, 20.), (3, 4, 40.),
             (5, 6, 60.), (7, 8, 80.)])
    assert (
        list(simple_object["byte"][1::2]) == [1, 3, 5, 7])
    assert (
        list(simple_object[1::2]["byte"]) == [1, 3, 5, 7])


def test_combined(simple_array, simple_object):
    filtered = simple_array[simple_array["byte"] > 1]
    filtered = filtered[filtered["byte"] < 6]
    filtered = filtered[::2]
    assert ([tuple(row) for row in filtered] ==
            [(2, 3, 30.), (4, 5, 50.)])

    filtered = simple_object[simple_object["byte"] > 1]
    filtered = filtered[filtered["byte"] < 6]
    filtered = filtered[::2]
    assert ([tuple(row) for row in filtered] ==
            [(2, 3, 30.), (4, 5, 50.)])


@pytest.fixture
def nested_data():
        shallow_data = [(1, 1, 1), (2, 4, 4),
                        (3, 6, 9), (4, 8, 16)]
        deep_data = [[(10, 11, 12), (21, 22, 23)],
                     [(15, 16, 17)],
                     [],
                     [(31, 32, 33), (41, 42, 43),
                      (51, 52, 53), (61, 62, 63)]]
        nested = [x + (deep_data[x_id],)
                  for x_id, x
                  in enumerate(shallow_data)]
        return nested


@pytest.fixture
def nested_dtype():
        dtype = np.dtype([('a', '<i8'), ('b', '<i8'),
                          ('c', '<i8'),
                          ('d', np.dtype([('e', '<i8'),
                                          ('f', '<i8'),
                                          ('g', '<i8')]))])
        return dtype


@pytest.fixture
def nested_object(nested_data):
        name = 'nameless'
        dataset = DatasetType(name)
        seq = dataset['nested'] = SequenceType('nested')
        for var in ['a', 'b', 'c']:
            seq[var] = BaseType(var)
        seq['d'] = SequenceType('d')
        for var in ['e', 'f', 'g']:
            seq['d'][var] = BaseType(var)

        nested = IterData(nested_data, seq)
        return nested


def test_nested_iter(nested_data, nested_object):
    assert ([tuple(row) for row in nested_object] ==
            nested_data)


def test_nested_iter_child(nested_data, nested_object):
    expected = [row[0] for row in nested_data]
    assert list(nested_object["a"]) == expected


def test_nested_iter_nested_sequence(nested_data, nested_object):
    expected = [row[3] for row in nested_data]
    assert list(nested_object["d"]) == expected


def test_nested_iter_nested_deep_child(nested_data, nested_object):
    expected = [[col[0] for col in row[3]]
                for row in nested_data]
    assert list(nested_object['d']['e']) == expected


@little_endian
@intfour
def test_nested_dtype(nested_dtype, nested_object):
    assert nested_object.dtype == nested_dtype


def test_nested_selection(nested_data, nested_object):
    selection = nested_object[nested_object["a"] > 2]
    expected = [tuple(row) for row in nested_data
                if row[0] > 2]
    assert [tuple(row) for row in selection] == expected


def test_nested_projection(nested_data, nested_object):
    projection = nested_data[1::2]
    expected = [tuple(row) for row_id, row
                in enumerate(nested_data)
                if row_id in range(1, len(nested_data), 2)]
    assert [tuple(row) for row in projection] == expected

    projection = nested_object[1::2]
    expected = [tuple(row) for row_id, row
                in enumerate(nested_data)
                if row_id in range(1, len(nested_data), 2)]
    assert [tuple(row) for row in projection] == expected


def test_nested_combined(nested_data, nested_object):
    filtered = [tuple(row) for row in nested_data
                if row[0] > 2]
    filtered = [tuple(row) for row in filtered
                if row[0] < 4]
    filtered = filtered[::2]
    assert ([tuple(row) for row in filtered] ==
            [(3, 6, 9, [])])

    filtered = nested_object[nested_object["a"] > 2]
    filtered = filtered[filtered["a"] < 4]
    filtered = filtered[::2]
    assert ([tuple(row) for row in filtered] ==
            [(3, 6, 9, [])])