API Documentation

A pure Python implementation of the OPeNDAP server protocol.

This module allows you to serve arbitrary data structures through the web framework of your choice as OPeNDAP data objects. It implements just the bare minimum of the DAP 2.0 protocol: DDS, DAS, and DODS responses and slicing. Array data needs to be supplied as numpy.ndarray.

The classes defined here allow the user to construct a data model in a flexible way, by describing the data hierarchy using data types defined by DAP.

This library only implements the server side encoding. It is tested to serve clients using the netCDF4 library. PyDAP client libraries are not supported.

class opendap_protocol.protocol.Array(name='', parent=None, *args, **kwargs)[source]

Bases: opendap_protocol.protocol.DAPDataObject

dds(constraint='', slicing=None)[source]
class opendap_protocol.protocol.Attribute(value=None, name=None, dtype=None)[source]

Bases: opendap_protocol.protocol.DAPObject

das(constraint='')[source]
dds(*args, **kwargs)[source]
class opendap_protocol.protocol.Byte(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dtype

alias of numpy.uint8

str = 'B'
class opendap_protocol.protocol.Config(DASK_ENCODE_CHUNK_SIZE: int = 20000000.0)[source]

Bases: object

DASK_ENCODE_CHUNK_SIZE = 20000000.0
class opendap_protocol.protocol.DAPAtom(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPObject

A class for handling DAP atomic variables.

classmethod byteorder()[source]
das(constraint='')[source]
dds(constraint='')[source]
dods_data(constraint='')[source]
str = None
classmethod subclasses()[source]

Return a list of subclasses.

classmethod type_from_np(nptype)[source]

Return the appropriate DAP type for a given numpy dtype.

Parameters:nptype – A numpy.dtpye object
Returns:A subclass of DAPAtom
class opendap_protocol.protocol.DAPDataObject(name='', parent=None, *args, **kwargs)[source]

Bases: opendap_protocol.protocol.DAPObject

A generic class for typed non-atomic objects holding actual data (i.e. Array and Grid).

dods_data(constraint='')[source]
exception opendap_protocol.protocol.DAPError[source]

Bases: Exception

class opendap_protocol.protocol.DAPObject(name='', parent=None, *args, **kwargs)[source]

Bases: object

A generic DAP object class.

append(*obj)[source]
das(constraint='')[source]
dashead()[source]
dastail()[source]
data_path
dds(constraint='')[source]
ddshead()[source]
ddstail()[source]
dods(constraint='')[source]
dods_data(constraint='')[source]
indent
class opendap_protocol.protocol.Dataset(name='', parent=None, *args, **kwargs)[source]

Bases: opendap_protocol.protocol.Structure

Class representing a DAP dataset.

dods_data(constraint='')[source]
class opendap_protocol.protocol.Float32(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dtype

alias of numpy.float32

str = '>f4'
class opendap_protocol.protocol.Float64(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dtype

alias of numpy.float64

str = '>f8'
class opendap_protocol.protocol.Grid(name='', parent=None, *args, **kwargs)[source]

Bases: opendap_protocol.protocol.DAPDataObject

dds(constraint='')[source]
class opendap_protocol.protocol.Int16(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dtype

alias of numpy.int16

str = '>i4'
class opendap_protocol.protocol.Int32(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dtype

alias of numpy.int32

str = '>i4'
class opendap_protocol.protocol.Sequence(*args, **kwargs)[source]

Bases: opendap_protocol.protocol.DAPObject

Class representing a DAP sequence.

add_schema(schema)[source]
append(*item)[source]
das(constraint='')[source]
dds(constraint='')[source]
dods_data(constraint='')[source]
end_of_seq = b'\xa5\x00\x00\x00'
start_of_inst = b'Z\x00\x00\x00'
class opendap_protocol.protocol.SequenceInstance(name='', parent=None, *args, **kwargs)[source]

Bases: opendap_protocol.protocol.DAPObject

Class representing a data item that will be added to a sequence.

data_path
dods_data(constraint='')[source]
validates(schema)[source]

Validate the sequence instance against a sequence schema

Parameters:schema – A SequenceSchema instance.
class opendap_protocol.protocol.SequenceSchema(name='', parent=None, *args, **kwargs)[source]

Bases: opendap_protocol.protocol.DAPObject

Class holding a schema against which SequenceItems are validated.

class opendap_protocol.protocol.String(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dods_data(constraint='')[source]
dtype

alias of numpy.str_

str = 'S'
class opendap_protocol.protocol.Structure(name='', parent=None, *args, **kwargs)[source]

Bases: opendap_protocol.protocol.DAPObject

Class representing a DAP structure.

class opendap_protocol.protocol.UInt16(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dtype

alias of numpy.uint16

str = '>u4'
class opendap_protocol.protocol.UInt32(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.DAPAtom

dtype

alias of numpy.uint32

str = '>u4'
class opendap_protocol.protocol.URL(value=None, name=None, parent=None)[source]

Bases: opendap_protocol.protocol.String

dtype

alias of numpy.str_

str = 'S'
opendap_protocol.protocol.dods_encode(data, dtype)[source]

This is the fast XDR conversion. A 100x100 array takes around 40 micro- seconds. This is a speedup of factor 100.

opendap_protocol.protocol.meets_constraint(constraint_expr, data_path)[source]

Parse the constraint expression and check if data_path meets the criteria.

Parameters:
  • constraint_expr – (string) A DAP constraint string
  • data_path – (string) Path of a DAP object within the dataset
Returns:

a boolean

opendap_protocol.protocol.parse_slice(token)[source]

Parse a single slice string

Parameters:token – A string containing a number [3], a range [3:7] or a colon [:]
Returns:An integer for simple numbers, or a slice object
opendap_protocol.protocol.parse_slice_constraint(constraint)[source]

Parses the slicing part of a constraint expression.

Parameters:constraint – A complete constraint string as received through DAP request.
Returns:A tuple of slices that can be used for accessing a subdomain of a dataset.
opendap_protocol.protocol.set_dask_encoding_chunk_size(chunk_size: int)[source]

Set the maximum chunk size used to encode ``dask.Array``s to XDR.

Parameters:chunk_size – (int) Encoding chunk size in Bytes
Returns:None