A Pythonic client for the official https://data.gov.gr API.
MIT License
A Pythonic client for the official data.gov.gr API. Aims to be an easy, intuitive and out-of-the-box way to:
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.) with an interest to programmatically explore and utilize the open data of data.gov.gr, to do so without having to write-debug-maintain trivial code or worry about that.
The recommended installation is via pip
:
pip install pydatagovgr
You must have an account on data.gov.gr to use the API service. In order to register and request an API token, submit a request in the designated official form here. The procedure is very simple and takes less than 5 minutes.
from pydatagovgr import DataGovClient
gov = DataGovClient(token='xoxb-1234-1243')
# fetch the COVID-19 vaccination data
covid_data = gov.query('mdg_emvolio')
# fetch data on Greece's internet traffic
traffic_data = gov.query('internet_traffic')
# fetch a list of the forest fires
fire_data = gov.query('mcp_forest_fires')
The pydatagovgr
client supports out-of-the-box all the things you know (and love), such as:
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 DataGovClient
gov = DataGovClient(token='xoxb-1234-1243')
# fetch the COVID-19 vaccination data for the 2021
data = gov.query('mdg_emvolio', date_from='2021-01-01', date_to='2021-12-31')
You can also use Python objects as arguments:
import datetime
data = 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 policy
gov = DataGovClient(token='xoxb-1234-1243', timeout=7, max_retries=3)
If you wish to contribute, this is a great place to start!
Distributed under the MIT License.
All rights are reserved by the official https://data.gov.gr site, its developers, its maintainers and the Hellenic Government.