Metadata-Version: 2.1
Name: enhydris-api-client
Version: 1.0.0
Summary: Python API client for Enhydris
Home-page: https://github.com/openmeteo/enhydris-api-client
Author: Antonis Christofides
Author-email: antonis@antonischristofides.com
License: GNU General Public License v3
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/x-rst
Requires-Dist: iso8601
Requires-Dist: pandas (>=0.20)
Requires-Dist: requests (<3,>=1)
Requires-Dist: htimeseries (<3,>=1.1.1)

===================
enhydris-api-client
===================


.. image:: https://img.shields.io/pypi/v/enhydris_api_client.svg
        :target: https://pypi.python.org/pypi/enhydris-api-client
        :alt: Pypi

.. image:: https://img.shields.io/travis/openmeteo/enhydris-api-client.svg
        :target: https://travis-ci.org/openmeteo/enhydris-api-client
        :alt: Build

.. image:: https://codecov.io/github/openmeteo/enhydris-api-client/coverage.svg
        :target: https://codecov.io/gh/openmeteo/enhydris-api-client
        :alt: Coverage

.. image:: https://pyup.io/repos/github/openmeteo/enhydris-api-client/shield.svg
         :target: https://pyup.io/repos/github/openmeteo/enhydris-api-client/
         :alt: Updates

Python API client for Enhydris

* Free software: GNU General Public License v3

This package has some functionality to make it easier to use the
Enhydris API.

Installation
============

``pip install enhydris-api-client``

Example
=======

::

    from enhydris_api_client import EnhydrisApiClient

    with EnhydrisApiClient("https://openmeteo.org") as api_client:
        api_client.login("joe", "topsecret")

        # Get a dict with attrs of station with id=42
        station = api_client.get_model(Station, 42)

        # Create a new station
        api_client.post_model(Station, data={"name": "my station"})


Reference
=========

**EnhydrisApiClient(base_url)**

Creates and returns an api client. It can also be used as a context
manager, though this is not necessary. If not used as a context manager,
you might get warnings about unclosed sockets.

``EnhydrisApiClient`` objects have the following methods:

**.login(username, password)**

Logins to Enhydris. Raises an exception if unsuccessful.

**.get_station(id)**

Returns a dict with the data for the station with the given ``id``.

**.post_station(data)**

Creates a new station, with its data given by dictionary ``data``, and
returns its id.

**.put_station(station_id, data)**

Replaces the station's attributes with ``data`` (a dictionary). Any
unspecified attributes are set to null.

**.patch_station(station_id, data)**

Same as ``put_station()`` except that any attribute not specified in
``data`` is untouched.

**.delete_station(station_id)**

Deletes the specified station.

**.get_timeseries(station_id, timeseries_id)**

Returns a dict with the data for the given time series.

**.post_timeseries(station_id, data)**

Creates a new time series, with its data given by dictionary ``data``,
and returns its id.

**.delete_timeseries(station_id, timeseries_id)**

Deletes the specified time series.

**.read_tsdata(station_id, timeseries_id, start_date=None, end_date=None)**

Retrieves the time series data into a htimeseries object that it
returns. If ``start_date`` and/or ``end_date`` are specified, only the
part of the time series between these dates is retrieved.

**.post_tsdata(station_id, timeseries_id, ts)**

Posts a time series to Enhydris, appending the records to any already
existing.  ``ts`` is a htimeseries object.

**.get_ts_end_date(station_id, timeseries_id)**

Returns a ``datetime`` object which is the last timestamp of the time
series. If the time series is empty it returns ``None``.


=======
History
=======

1.0.0 (2020-02-28)
==================

- We now support only Python 3.7 or greater.
- If there is an http error, the error message now includes the response body.

0.5.1 (2020-01-05)
==================

- Minor fix for compatibility with htimeseries 2

0.5.0 (2019-06-13)
==================

- Can now be used as a context manager
- Added post/put/patch/delete station

0.4.1 (2019-06-12)
==================

- Fixed bug where .read_tsdata() was failing to set the metadata
  attributes of the time series.

0.4.0 (2019-06-12)
==================

- .read_tsdata() now accepts optional arguments start_date and end_date.

0.3.0 (2019-06-06)
==================

- Upgrade dependecy htimeseries to 1.0

0.2.0 (2019-04-17)
==================

- Support new API of Enhydris 3

0.1.0 (2019-03-06)
==================

- Initial release


