Metadata-Version: 2.1
Name: frost-client
Version: 0.1.4
Summary: Python wrapper for the frost.met.no API
Home-page: https://github.com/BergensTidende/frost-client
Author: Anders G. Eriksen
Author-email: anders.eriksen@bt.no
License: MIT
Keywords: weather pandas
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.6
Requires-Python: >= 3.6
Description-Content-Type: text/markdown
Requires-Dist: requests
Provides-Extra: pandas
Requires-Dist: pandas ; extra == 'pandas'

# frost-client

[![Build Status](https://travis-ci.org/BergensTidende/frost-client.svg?branch=master)](https://travis-ci.org/BergensTidende/frost-client)

[![Documentation Status](https://readthedocs.org/projects/frost-client/badge/?version=latest)](https://frost-client.readthedocs.io/en/latest/?badge=latest)

This Python client wraps the [Frost API](https://frost.met.no/concepts#getting_started). You should 
read up on those docs before using this client. And be sure to check out met.no's 
[Terms of Use](https://frost.met.no/termsofuse)

The main purpose of this client is returns Pandas Dataframes from Frost API data.

This is an unofficial client. We have no relationship to met.no

Documentation: https://frost-client.readthedocs.io/en/latest/

## Install

Requires Python 3.7

`pip install frost-client`

or if you want the response from the API returned as Pandas DataFrame, use:

`pip install frost-client[pandas]`

or using pipenv: 

`pipenv install frost-client[pandas]`

## Usage

The Frost API key should be exposed as a environment variable:

`FROST_API_KEY=xxxxxx` 

or passed as a username parameter when creating and instance of the class.

### Get weather data sources

Get all available observation sources (stations) for Hordaland county (12)

```
from frost.client import APIError, Frost
f = Frost()
res = f.get_sources(county='12')

# return as Pandas Dataframe (requires Pandas installed)
df = res.to_df()

# return IDs of sources as list
ids = res.to_ids_list()
```

### Get available time series

Display available time series for a station (here Bergen - Florida)

```
from frost.client import APIError, Frost
f = Frost()
res = f.get_available_timeseries(sources=['SN50540'])

# return as Pandas Dataframe
df = res.to_df()

```

### Get observations

Display observations for a station (here Bergen - Florida)

```
from frost.client import APIError, Frost
f = Frost()
res = f.get_observations(
            sources=['SN50540'],
            elements=['sum(precipitation_amount P1D)'],
            timeoffsets=['PT6H'],
            referencetime='2018-01-01/2018-02-01')
df = res.to_df()

```

See tests for more examples.

## Local development

You should use pipenv

### Tests

Enable the pipenv with

`pipenv shell`

Make sure to export env variable 

`FROST_API_KEY=xxxxxx`

To run all tests: 

`nosetests`

To run specific tests:

`nosetests tests.test_requests:TestFrostRequests.test_get_sources`


