/usr/share/pyshared/dap/responses/dods.py is in python-dap 2.2.6.7-2.
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 | """DODS DAP response.
This module implements the DODS DAP response, building it
dynamically from datasets objects.
"""
__author__ = "Roberto De Almeida <rob@pydap.org>"
import itertools
from dap import dtypes
from dap.lib import __dap__, isiterable
from dap.xdr import DapPacker
def build(self, constraints=None):
dataset = self._parseconstraints(constraints)
headers = [('Content-description', 'dods_data'),
('XDODS-Server', 'dods/%s' % '.'.join([str(i) for i in __dap__])),
('Content-type', 'application/octet-stream'),
]
def output(dataset):
foo, dds = self.dds(constraints)
for line in dds: yield line
yield 'Data:\n'
for line in _dispatch(dataset): yield line
return headers, output(dataset)
def _dispatch(dapvar, data=None):
r"""Build a DODS from a DAP object.
>>> dataset = dtypes.DatasetType(name='temp.dat')
>>> dataset['Tmp'] = dtypes.ArrayType(name='Tmp', shape=[5], type='Int32', data=range(5))
>>> for line in _dispatch(dataset):
... print repr(line)
'\x00\x00\x00\x05\x00\x00\x00\x05'
'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04'
"""
func = {dtypes.DatasetType : _dataset,
dtypes.StructureType: _structure,
dtypes.SequenceType : _sequence,
dtypes.BaseType : _base,
dtypes.ArrayType : _array,
dtypes.GridType : _grid,
}[type(dapvar)]
return func(dapvar, data)
def _dataset(dapvar, data=None):
for var in dapvar.walk():
for line in _dispatch(var):
yield line
_structure = _dataset
_grid = _dataset
def _sequence(dapvar, data=None):
for struct_ in dapvar:
yield '\x5a\x00\x00\x00'
for line in _dispatch(struct_): yield line
yield '\xa5\x00\x00\x00'
def _base(dapvar, data=None):
return DapPacker(dapvar)
_array = _base
def _test():
import doctest
doctest.testmod()
if __name__ == "__main__":
_test()
|