A Pythonic client for the official https://data.gov.gr API.

ilias-ant ilias-ant Last update: Jul 24, 2022

pydatagovgr

PyPI PyPI - Python Version codecov Code style: black GitHub Workflow Status Documentation StatusPyPI - Wheel

A Pythonic client for the official data.gov.gr API. Aims to be an easy, intuitive andout-of-the-box way to:

  • find data published by central government, local authorities and public bodies of Greece
  • build related products and services.

while being robust, following best-practices and eliminating developer-induced bugs.

The aspiration for this library is to enable users of different backgrounds (academia, industry, students etc.) withan interest to programmatically explore and utilize the open data of data.gov.gr, to do so without having towrite-debug-maintain trivial code or worry about that.

Install

The recommended installation is via pip:

pip install pydatagovgr

Quick Usage

You must have an account on data.gov.gr to use the API service. In order to register and requestan API token, submit a request in the designated official form here. The procedure is verysimple and takes less than 5 minutes.

from pydatagovgr import DataGovClientgov = DataGovClient(token='xoxb-1234-1243')# fetch the COVID-19 vaccination datacovid_data = gov.query('mdg_emvolio')# fetch data on Greece's internet traffictraffic_data = gov.query('internet_traffic')# fetch a list of the forest firesfire_data = gov.query('mcp_forest_fires')

Features

The pydatagovgr client supports out-of-the-box all the things you know (and love), such as:

  • authentication: properly handles the authentication to data.gov.gr - all you have to do is provide a valid token.
  • persistent session: making several requests to data.gov.gr reuses the same underlying connection.
  • timeout policy: informs data.gov.gr that it will await at most x seconds for a response for a given request.Defaults to 60 sec.
  • retry policy: to account for potential server failures of lossy network connections, client automatically retrieswith an exponential-backoff, to avoid harming the data.gov.gr. Defaults to a maximum of 3 retries.

Not-So-Quick Usage

The data.gov.gr API exposes, through its api/v1/query GET endpoint, various datasets from different topics.

The pydatagovgr client thus provides a corresponding query method, through which every available dataset can be obtained.You can also pass additional arguments to filter the results accordingly.

from pydatagovgr import DataGovClientgov = DataGovClient(token='xoxb-1234-1243')# fetch the COVID-19 vaccination data for the 2021data = gov.query('mdg_emvolio', date_from='2021-01-01', date_to='2021-12-31')

You can also use Python objects as arguments:

import datetimedata = gov.query(    'mdg_emvolio',     date_from=datetime.date(2021, 1, 1),     date_to=datetime.date(2021, 12, 31))

Apart from the authentication token, you can also configure the timeout and retry policies of your client. For example:

# this client will stop waiting for a response after 7 seconds gov = DataGovClient(token='xoxb-1234-1243', timeout=7)# this client will retry at most 3 times, with an exponential-backoff# (i.e. each retry waits exponentially longer before occurs: 1, 2, 4, 8, ...sec)gov = DataGovClient(token='xoxb-1234-1243', max_retries=3)# this client will respect both a timeout policy and a retry policygov = DataGovClient(token='xoxb-1234-1243', timeout=7, max_retries=3)

Related Projects

How to contribute

If you wish to contribute, this is a great place to start!

License

Distributed under the MIT License.

Acknowledgements

All rights are reserved by the official https://data.gov.gr site, its developers, its maintainers and theHellenic Government.

Subscribe to our newsletter