Skip to main content

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

Project description

pydatagovgr

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

A Pythonic client for the official data.gov.gr API. Aims to be an easy, intuitive and out-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.) 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.

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 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')

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 retries with 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 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, 16, 32, 64, ... seconds)
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)

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 the Hellenic Government.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydatagovgr-0.1.9.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydatagovgr-0.1.9-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file pydatagovgr-0.1.9.tar.gz.

File metadata

  • Download URL: pydatagovgr-0.1.9.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.8.10 Linux/5.4.0-1047-azure

File hashes

Hashes for pydatagovgr-0.1.9.tar.gz
Algorithm Hash digest
SHA256 9dbb4b2cc52d46ba672fa58a9443aab984a740522b52e4acf476fbbb5a68165f
MD5 9e9b0dc2e72780251d0619e7acf81fb3
BLAKE2b-256 d351ab9c4a62a3505b841bb2e6bc3189bb79c4a6febdbefc808684792047a35c

See more details on using hashes here.

File details

Details for the file pydatagovgr-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: pydatagovgr-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.8.10 Linux/5.4.0-1047-azure

File hashes

Hashes for pydatagovgr-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 34c50c931af556fed1095fd317b24b930996930149ae53d5a5d66c5afcc5b60f
MD5 caf83cda6187fc32f498f17f76db4142
BLAKE2b-256 94afdd434bf063f6957c2601b560cc3c0fc4da2e37da4d88efb05767598c2fe7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page