.. image:: https://github.com/timcera/dapclient/actions/workflows/pypi-package.yml/badge.svg
    :alt: Tests
    :target: https://github.com/timcera/dapclient/actions/workflows/pypi-package.yml
    :height: 20

.. image:: https://img.shields.io/coveralls/github/timcera/dapclient
    :alt: Test Coverage
    :target: https://coveralls.io/r/timcera/dapclient?branch=master
    :height: 20

.. image:: https://img.shields.io/pypi/v/dapclient.svg
    :alt: Latest release
    :target: https://pypi.python.org/pypi/dapclient/
    :height: 20

.. image:: http://img.shields.io/pypi/l/dapclient.svg
    :alt: BSD-3 clause license
    :target: https://pypi.python.org/pypi/dapclient/
    :height: 20

.. image:: http://img.shields.io/pypi/dd/dapclient.svg
    :alt: dapclient downloads
    :target: https://pypi.python.org/pypi/dapclient/
    :height: 20

.. image:: https://img.shields.io/pypi/pyversions/dapclient
    :alt: PyPI - Python Version
    :target: https://pypi.org/project/dapclient/
    :height: 20

dapclient - Quick Guide
=======================
dapclient is a client-only fork of the venerable pydap. It implements the
Opendap/DODS protocol.  You can use dapclient to access scientific data on the
internet without having to download it; instead, you work with special array
and iterable objects that download data on-the-fly as necessary, saving
bandwidth and time.

Why fork pydap?
---------------
* Simplify the codebase by remove the server side code
* Update the code to use modern python 3.8+
* Up-to-date pypi and conda packages

This version has no additional features, and it only has a few tests.  My
immediate goal is to have pip and conda packages to support my tsgettoolbox
package.  I will add tests and features as time (and pull requests!) allow.

Quickstart
----------
You can install the latest version using
[pip](http://pypi.python.org/pypi/pip) or conda.

    $ pip install dapclient

Also maintained on the conda-forge channel [conda channel](https://anaconda.org/conda-forge/dapclient)::

    $ conda install -c conda-forge dapclient

This will install dapclient together with all the required
dependencies. You can now open any remotely served dataset, and dapclient
will download the accessed data on-the-fly as needed::

    >>> from dapclient.client import open_url
    >>> dataset = open_url('http://test.opendap.org/dap/data/nc/coads_climatology.nc')
    >>> var = dataset['SST']
    >>> var.shape
    (12, 90, 180)
    >>> var.dtype
    dtype('>f4')
    >>> data = var[0,10:14,10:14]  # this will download data from the server
    >>> data
    <GridType with array 'SST' and maps 'TIME', 'COADSY', 'COADSX'>
    >>> print(data.data)
    [array([[[ -1.26285708e+00,  -9.99999979e+33,  -9.99999979e+33, -9.99999979e+33],
            [ -7.69166648e-01,  -7.79999971e-01,  -6.75454497e-01, -5.95714271e-01],
            [  1.28333330e-01,  -5.00000156e-02,  -6.36363626e-02, -1.41666666e-01],
            [  6.38000011e-01,   8.95384610e-01,   7.21666634e-01, 8.10000002e-01]]], dtype=float32),
               array([ 366.]),
               array([-69., -67., -65., -63.]),
               array([ 41.,  43.,  45.,  47.])]

For more information, please check the documentation on [using dapclient
as a client](https://timcera.bitbucket.io/dapclient/client.html).
