Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ilias-ant/pydatagovgr
A Pythonic client for the official https://data.gov.gr API.
https://github.com/ilias-ant/pydatagovgr
client govgr open-data pip
Last synced: about 2 months ago
JSON representation
A Pythonic client for the official https://data.gov.gr API.
- Host: GitHub
- URL: https://github.com/ilias-ant/pydatagovgr
- Owner: ilias-ant
- License: mit
- Created: 2021-01-06T17:32:40.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-12-24T12:32:05.000Z (about 2 years ago)
- Last Synced: 2024-10-14T00:53:47.918Z (2 months ago)
- Topics: client, govgr, open-data, pip
- Language: Python
- Homepage: https://pydatagovgr.readthedocs.io
- Size: 178 KB
- Stars: 43
- Watchers: 3
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# pydatagovgr
[![PyPI](https://img.shields.io/pypi/v/pydatagovgr?color=blue&label=PyPI&logo=PyPI&logoColor=white)](https://pypi.org/project/pydatagovgr/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pydatagovgr?logo=python&logoColor=white)](https://www.python.org/) [![codecov](https://codecov.io/gh/ilias-ant/pydatagovgr/branch/main/graph/badge.svg?token=2H0VB8I8IH)](https://codecov.io/gh/ilias-ant/pydatagovgr) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/ilias-ant/pydatagovgr/ci.yml?branch=main)](https://github.com/ilias-ant/pydatagovgr/actions/workflows/ci.yml) [![Documentation Status](https://readthedocs.org/projects/pydatagovgr/badge/?version=latest)](https://pydatagovgr.readthedocs.io/en/latest/?badge=latest)
[![PyPI - Wheel](https://img.shields.io/pypi/wheel/pydatagovgr?color=orange)](https://www.python.org/dev/peps/pep-0427/)A Pythonic client for the official [data.gov.gr](https://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`:
```bash
pip install pydatagovgr
```## Quick Usage
You must have an account on [data.gov.gr](https://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](https://data.gov.gr/token/). The procedure is very
simple and takes less than 5 minutes.```python
from pydatagovgr import DataGovClientgov = 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.```python
from pydatagovgr import DataGovClientgov = 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:```python
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:
```python
# 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)
```## Related Projects
- [go-data-gov-gr-sdk](https://github.com/ppapapetrou76/go-data-gov-gr-sdk): An SDK - written in Go - to access the data.gov.gr API.
- [datagovgR](https://github.com/elenigvasilaki/datagovgR): An R Wrapper Package for the data.gov.gr API.## How to contribute
If you wish to contribute, [this](CONTRIBUTING.md) is a great place to start!
## License
Distributed under the [MIT License](LICENSE).
## Acknowledgements
All rights are reserved by the official [https://data.gov.gr](https://data.gov.gr) site, its developers, its maintainers and the
Hellenic Government.