Package dap :: Module xdr :: Class DapUnpacker
[hide private]
[frames] | no frames]

Class DapUnpacker

source code

object --+
         |
        DapUnpacker

A XDR data unpacker.

Unpacking data from a base type:
>>> from dap.dtypes import *
>>> dapvar = BaseType(data=1, name='dapvar', type='Byte')
>>> print dapvar.data
1
>>> from dap.server import SimpleHandler
>>> from dap.helper import escape_dods
>>> dataset = DatasetType(name='test')
>>> dataset['dapvar'] = dapvar
>>> headers, output = SimpleHandler(dataset).dods()
>>> print escape_dods(''.join(output), pad='')
Dataset {
    Byte dapvar;
} test;
Data:
\x01\x00\x00\x00
>>> headers, output = SimpleHandler(dataset).dods()
>>> xdrdata = ''.join(output)
>>> start = xdrdata.index('Data:\n') + len('Data:\n')
>>> xdrdata = xdrdata[start:]
>>> data = DapUnpacker(xdrdata, (), dapvar.type)
>>> print data.getvalue()
1
An array of bytes:
>>> dapvar = ArrayType(name='dapvar', data=range(5), shape=[5], type='Byte')
>>> dataset['dapvar'] = dapvar
>>> headers, output = SimpleHandler(dataset).dods()
>>> xdrdata = ''.join(output)
>>> start = xdrdata.index('Data:\n') + len('Data:\n')
>>> xdrdata = xdrdata[start:]
>>> data = DapUnpacker(xdrdata, dapvar.shape, dapvar.type, outshape=[5])
>>> print data.getvalue()
[0 1 2 3 4]
Another array:
>>> dapvar = ArrayType(name='dapvar', data=range(25), shape=[5,5], type='Float32')
>>> dataset['dapvar'] = dapvar
>>> headers, output = SimpleHandler(dataset).dods()
>>> xdrdata = ''.join(output)
>>> start = xdrdata.index('Data:\n') + len('Data:\n')
>>> xdrdata = xdrdata[start:]
>>> data = DapUnpacker(xdrdata, dapvar.shape, dapvar.type, outshape=[5,5])
>>> print data.getvalue()
[[  0.   1.   2.   3.   4.]
 [  5.   6.   7.   8.   9.]
 [ 10.  11.  12.  13.  14.]
 [ 15.  16.  17.  18.  19.]
 [ 20.  21.  22.  23.  24.]]
One more:
>>> dapvar = ArrayType(name='dapvar', data=['um', 'dois', 'três'], shape=[3], type='String')
>>> dataset['dapvar'] = dapvar
>>> headers, output = SimpleHandler(dataset).dods()
>>> for line in output:
...     print repr(line)
'Dataset {\n'
'    String dapvar[dapvar = 3];\n'
'} test;\n'
'Data:\n'
'\x00\x00\x00\x03'
'\x00\x00\x00\x02um\x00\x00'
'\x00\x00\x00\x04dois'
'\x00\x00\x00\x05tr\xc3\xaas\x00\x00\x00'
>>> headers, output = SimpleHandler(dataset).dods()
>>> xdrdata = ''.join(output)
>>> start = xdrdata.index('Data:\n') + len('Data:\n')
>>> xdrdata = xdrdata[start:]
>>> data = DapUnpacker(xdrdata, dapvar.shape, dapvar.type, outshape=[3])
>>> print data.getvalue()
[um dois três]


Instance Methods [hide private]
  __init__(self, data, shape, type, outshape=None)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
  getvalue(self)
Unpack the XDR-encoded data.
  _unpack_uint(self)
  _unpack_bytes(self, count)
  _unpack_string(self, count)

Inherited from object: __delattr__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __str__


Properties [hide private]

Inherited from object: __class__


Method Details [hide private]

__init__(self, data, shape, type, outshape=None)
(Constructor)

source code 
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
Overrides: object.__init__
(inherited documentation)

getvalue(self)

source code 
Unpack the XDR-encoded data.

_unpack_uint(self)

source code 
None

_unpack_bytes(self, count)

source code 
None

_unpack_string(self, count)

source code 
None