Unofficial ESIOS API Python library. Up to date and fully equipped.
Project description
esiosapy
Unofficial ESIOS API Python library. Up to date and fully equipped.
Documentation: https://m4rc0sx.github.io/esiosapy/
esiosapy allows you to communicate with the ESIOS/REE API in a comfortable and abstract way, so that everything is handled by objects and you will not need to write any raw request.
Features
- Simple API: Easy-to-use client for accessing ESIOS data
- Sync & Async: Both synchronous and asynchronous clients
- Type Hints: Full type annotations with strict mypy support
- Retry Logic: Automatic retry with exponential backoff for network errors
- CLI: Command-line interface for quick data exploration
- Logging: Built-in logging for debugging
- Configurable Timeouts: Customizable request timeouts
Installation
esiosapy is available on PyPI and supports Python >=3.10:
pip install esiosapy
Optional dependencies
# Async support (httpx)
pip install esiosapy[async]
# HTML description prettifying (beautifulsoup4)
pip install esiosapy[beautifulsoup]
# All optional dependencies
pip install esiosapy[all]
Quick start
You need a personal token to use the ESIOS API. You can request one at https://api.esios.ree.es/.
Indicators
from esiosapy import ESIOSAPYClient
from esiosapy.models.indicator.time_trunc import TimeTrunc
client = ESIOSAPYClient(token="your_esios_api_token")
# Get all indicators
indicators = client.indicators.list_all()
# Search indicators by name
solar = client.indicators.search("solar")
# Get data for an indicator
indicator = indicators[0]
data = indicator.get_data("2021-01-01", "2021-01-02", time_trunc=TimeTrunc.HOUR)
Archives
from esiosapy import ESIOSAPYClient
from esiosapy.models.archive.archive_date_type import ArchiveDateType
client = ESIOSAPYClient(token="your_esios_api_token")
# Search files by date range
archives = client.archives.list_by_date_range(
"2021-01-01T00:00:00.000+01:00",
"2021-01-02T00:00:00.000+01:00",
date_type=ArchiveDateType.PUBLICATION,
)
# Download, unzip, and clean up
archives[0].download_file(unzip=True, remove_zip=True)
Async usage
import asyncio
from esiosapy import AsyncESIOSAPYClient
async def main():
async with AsyncESIOSAPYClient(token="your_esios_api_token") as client:
indicators = await client.indicators.list_all()
asyncio.run(main())
Context manager
Both sync and async clients support context managers for automatic resource cleanup:
with ESIOSAPYClient(token="your_esios_api_token") as client:
indicators = client.indicators.list_all()
CLI
# List all indicators
esiosapy --token YOUR_TOKEN indicators
# List all archives
esiosapy --token YOUR_TOKEN archives
# Set custom timeout
esiosapy --token YOUR_TOKEN --timeout 60 indicators
Dependencies
esiosapy depends on Pydantic, requests, and tenacity.
Contributing
All contributions are welcome! Please read the contributing guide for details on how to get started.
License
This project is licensed under the GPL-3.0-or-later license. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file esiosapy-3.0.0.tar.gz.
File metadata
- Download URL: esiosapy-3.0.0.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62cbf2f54825c8f39fd0794a5e0d342a1689c12c79d5da57a89f73fbacb08483
|
|
| MD5 |
62ee849b3fd8cda1707677ea45b4e618
|
|
| BLAKE2b-256 |
34a01b4b374be175ee013c2f716fc49a7884cd7e78cc5919bad6636af410e10c
|
File details
Details for the file esiosapy-3.0.0-py3-none-any.whl.
File metadata
- Download URL: esiosapy-3.0.0-py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91d25f716b60759b92983014e04b4f6e897eb982924ffd140be08caf6fd7557e
|
|
| MD5 |
a7f641e3263b5344345fc407e5c5f82d
|
|
| BLAKE2b-256 |
31c8185c3d5ba4abe9ffb19f2f46e45ecb96bf7e45642b905f8d979cfd0b138c
|