ctr-datadis


Namectr-datadis JSON
Version 0.4.5 PyPI version JSON
download
home_pageNone
SummarySDK completo de Python para la API oficial de Datadis - Acceso programático a datos de consumo eléctrico español
upload_time2025-10-24 12:49:16
maintainerNone
docs_urlNone
authorCristianTacoronteRivero
requires_python<4.0,>=3.9
licenseNone
keywords datadis api sdk energia consumo electricidad españa cups distribuidora
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ctr-datadis

[![PyPI version](https://badge.fury.io/py/ctr-datadis.svg)](https://badge.fury.io/py/ctr-datadis)
[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Documentation Status](https://readthedocs.org/projects/ctr-datadis/badge/?version=latest)](https://ctr-datadis.readthedocs.io/en/latest/?badge=latest)
[![Tests](https://github.com/TacoronteRiveroCristian/ctr-datadis/workflows/Auto%20Publish%20on%20Main%20Push/badge.svg)](https://github.com/TacoronteRiveroCristian/ctr-datadis/actions)

**Un SDK completo de Python para interactuar con la API oficial de Datadis** (plataforma española de datos de suministro eléctrico).

**Datadis** es la plataforma oficial del gobierno español que proporciona acceso a los datos de consumo eléctrico para los consumidores españoles. Este SDK facilita el acceso a tus datos eléctricos de forma programática.

## Características

- **Dos Versiones de Cliente** - V1 (básico) y V2 (recomendado con manejo avanzado de errores)
- **Autenticación Automática** - Autenticación basada en tokens con renovación automática
- **Cobertura Completa de API** - Acceso a todos los endpoints de la API de Datadis
- **Manejo Robusto de Errores** - V2 incluye manejo específico de errores por distribuidor
- **Parámetros Flexibles** - Acepta tipos Python nativos (datetime, int, float) además de strings
- **Seguridad de Tipos** - Type hints completos y modelos Pydantic para validación de datos
- **Context Managers** - Gestión automática de recursos con declaraciones `with`
- **Python 3.9+** - Compatible con versiones modernas de Python
- **Normalización de Texto** - Manejo automático de acentos españoles y caracteres especiales
- **Datos de Energía Reactiva** - Acceso exclusivo en V2 para análisis energético avanzado

## Instalación

```bash
pip install ctr-datadis
```

## Inicio Rápido

### Cliente V1 (Básico)

```python
from datadis_python.client.v1.simple_client import SimpleDatadisClientV1

# Usar context manager (recomendado)
with SimpleDatadisClientV1(username="12345678A", password="tu_password") as client:
    # Obtener puntos de suministro
    supplies = client.get_supplies()
    print(f"Encontrados {len(supplies)} puntos de suministro")

    if supplies:
        # Obtener consumo anual (formato mensual OBLIGATORIO)
        consumption = client.get_consumption(
            cups=supplies[0].cups,
            distributor_code=supplies[0].distributorCode,
            date_from="2024/01",  # Enero 2024
            date_to="2024/12"     # Diciembre 2024
        )

        total_kwh = sum(c.consumptionKWh for c in consumption if c.consumptionKWh)
        print(f"Consumo total 2024: {total_kwh:.2f} kWh")
```

### Cliente V2 (Recomendado - con manejo de errores mejorado)

```python
from datadis_python.client.v2.simple_client import SimpleDatadisClientV2

with SimpleDatadisClientV2(username="12345678A", password="tu_password") as client:
    # Obtener suministros con manejo de errores
    supplies_response = client.get_supplies()

    print(f"Suministros obtenidos: {len(supplies_response.supplies)}")

    # Verificar errores por distribuidor (exclusivo V2)
    if supplies_response.distributor_error:
        for error in supplies_response.distributor_error:
            print(f"Error en {error.distributorName}: {error.errorDescription}")

    if supplies_response.supplies:
        supply = supplies_response.supplies[0]

        # Obtener consumo con manejo robusto de errores
        consumption_response = client.get_consumption(
            cups=supply.cups,
            distributor_code=supply.distributorCode,
            date_from="2024/01",
            date_to="2024/12"
        )

        if consumption_response.time_curve:
            total_kwh = sum(c.consumptionKWh for c in consumption_response.time_curve
                          if c.consumptionKWh)
            print(f"Consumo total 2024: {total_kwh:.2f} kWh")

        # Funcionalidad exclusiva V2: Energía reactiva
        reactive_data = client.get_reactive_data(
            cups=supply.cups,
            distributor_code=supply.distributorCode,
            date_from="2024/01",
            date_to="2024/12"
        )
        print(f"Datos de energía reactiva: {len(reactive_data)} registros")
```

## Métodos Disponibles

### Información de Suministro
```python
# Obtener todos los puntos de suministro
supplies = client.get_supplies()

# Obtener detalles del contrato para un CUPS específico
contract = client.get_contract_detail(cups="ES1234...", distributor_code="2")
```

### Datos de Consumo
```python
from datetime import datetime, date

# Obtener datos de consumo con fechas mensuales (OBLIGATORIO)
consumption = client.get_consumption(
    cups="ES1234000000000001JN0F",
    distributor_code=2,             # int o string
    date_from=datetime(2024, 1, 1), # datetime (solo primer día), date o string YYYY/MM
    date_to=datetime(2024, 2, 1),   # datetime (solo primer día), date o string YYYY/MM
    measurement_type=0,             # int, float o string
    point_type=1                    # int, float o string (opcional)
)

# Obtener datos de potencia máxima
max_power = client.get_max_power(
    cups="ES1234000000000001JN0F",
    distributor_code=2,             # int o string
    date_from=datetime(2024, 1, 1), # datetime (solo primer día), date o string YYYY/MM
    date_to=datetime(2024, 2, 1)    # datetime (solo primer día), date o string YYYY/MM
)
```

### Información de Distribuidoras
```python
# Obtener distribuidoras disponibles
distributors = client.get_distributors()
```

## Tipos de Parámetros Flexibles

El SDK acepta múltiples tipos de parámetros para mayor comodidad, manteniendo 100% de compatibilidad hacia atrás:

### Fechas (IMPORTANTE: Solo formato mensual)

La API de Datadis **SOLO acepta fechas mensuales**. No es posible especificar días específicos.

```python
# ESTAS YA NO SON VÁLIDAS (contienen días específicos):
# date_from = "2024/01/15"           # RECHAZADO: contiene día específico
# date_from = datetime(2024, 1, 15)  # RECHAZADO: contiene día específico
# date_from = date(2024, 1, 15)      # RECHAZADO: contiene día específico

# SOLO ESTAS SON VÁLIDAS (formato mensual):
date_from = "2024/01"              # String YYYY/MM (RECOMENDADO)
date_from = datetime(2024, 1, 1)   # datetime primer día del mes (se convierte a 2024/01)
date_from = date(2024, 1, 1)       # date primer día del mes (se convierte a 2024/01)
```

### Números
```python
# Measurement type, point type, etc.:
measurement_type = "0"             # String tradicional
measurement_type = 0               # int
measurement_type = 0.0             # float

# Distributor code:
distributor_code = "2"             # String tradicional
distributor_code = 2               # int
```

### Conversión Automática
- Las fechas `datetime`/`date` se convierten automáticamente al formato API mensual (YYYY/MM)
- **IMPORTANTE**: Solo se aceptan `datetime`/`date` del primer día del mes (día 1)
- Los números `int`/`float` se convierten a strings
- Los strings se validan para asegurar formato mensual correcto (YYYY/MM)
- **Validación estricta** - fechas con días específicos serán rechazadas

## Modelos de Datos

El SDK incluye modelos Pydantic para manejo seguro de tipos:

- `SupplyData` - Información de puntos de suministro
- `ConsumptionData` - Registros de consumo energético
- `ContractData` - Detalles del contrato
- `MaxPowerData` - Datos de demanda de potencia máxima

## Manejo de Errores

```python
from datadis_python.exceptions import DatadisError, AuthenticationError, APIError

try:
    supplies = client.get_supplies()
except AuthenticationError:
    print("Credenciales inválidas")
except APIError as e:
    print(f"Error de API: {e}")
except DatadisError as e:
    print(f"Error de Datadis: {e}")
```

## Requisitos

- Python 3.9 o superior
- Credenciales válidas de cuenta Datadis
- Conexión a internet

## Limitaciones de la API

- Los datos están disponibles solo para los últimos 2 años
- **CRÍTICO**: El formato de fecha DEBE ser YYYY/MM (solo datos mensuales, NO diarios)
- Fechas con días específicos (ej: "2024/01/15") serán rechazadas automáticamente
- La plataforma Datadis aplica limitación de velocidad (rate limiting)
- La mayoría de operaciones requieren un código de distribuidora

## Documentación

- **Documentación Completa**: [https://ctr-datadis.readthedocs.io](https://ctr-datadis.readthedocs.io)
- **Referencia de API**: Documentación detallada de la API con ejemplos
- **Ejemplos**: Tutoriales paso a paso y casos de uso
- **Solución de Problemas**: Problemas comunes y soluciones

## Comparación de Versiones

| Característica | Cliente V1 | Cliente V2 |
|----------------|------------|------------|
| **Datos de Consumo** | ✓ | ✓ |
| **Información de Suministro** | ✓ | ✓ |
| **Detalles del Contrato** | ✓ | ✓ |
| **Datos de Potencia Máxima** | ✓ | ✓ |
| **Datos de Energía Reactiva** | ✗ | ✓ |
| **Manejo de Errores por Distribuidor** | ✗ | ✓ |
| **Respuestas Estructuradas** | ✗ | ✓ |
| **Información de Errores Detallada** | ✗ | ✓ |
| **Soporte para NIFs Autorizados** | Limitado | ✓ |
| **Tipo de Respuesta** | Lista simple | Objeto estructurado |

### ¿Cuál elegir?

**Usa Cliente V1 cuando:**
- Migres código existente
- Necesites respuestas simples (listas directas)
- Implementes scripts básicos
- Solo requieras datos de consumo estándar

**Usa Cliente V2 cuando:** (Recomendado)
- Desarrolles aplicaciones de producción
- Necesites manejo robusto de errores
- Quieras acceso a energía reactiva
- Requieras información detallada de fallos
- Trabajes con múltiples distribuidores

## Contribuciones

Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.

## Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo [LICENSE](LICENSE) para más detalles.

## Descargo de Responsabilidad

Este es un SDK no oficial para la API de Datadis. No está afiliado ni respaldado por Datadis o el gobierno español.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ctr-datadis",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "datadis, api, sdk, energia, consumo, electricidad, espa\u00f1a, cups, distribuidora",
    "author": "CristianTacoronteRivero",
    "author_email": "tacoronteriverocristian@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/41/3f/7b590f441ea1a31cd0d23e3bbf19bed901450f1f01776a4cd11426f9cd6f/ctr_datadis-0.4.5.tar.gz",
    "platform": null,
    "description": "# ctr-datadis\n\n[![PyPI version](https://badge.fury.io/py/ctr-datadis.svg)](https://badge.fury.io/py/ctr-datadis)\n[![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Documentation Status](https://readthedocs.org/projects/ctr-datadis/badge/?version=latest)](https://ctr-datadis.readthedocs.io/en/latest/?badge=latest)\n[![Tests](https://github.com/TacoronteRiveroCristian/ctr-datadis/workflows/Auto%20Publish%20on%20Main%20Push/badge.svg)](https://github.com/TacoronteRiveroCristian/ctr-datadis/actions)\n\n**Un SDK completo de Python para interactuar con la API oficial de Datadis** (plataforma espa\u00f1ola de datos de suministro el\u00e9ctrico).\n\n**Datadis** es la plataforma oficial del gobierno espa\u00f1ol que proporciona acceso a los datos de consumo el\u00e9ctrico para los consumidores espa\u00f1oles. Este SDK facilita el acceso a tus datos el\u00e9ctricos de forma program\u00e1tica.\n\n## Caracter\u00edsticas\n\n- **Dos Versiones de Cliente** - V1 (b\u00e1sico) y V2 (recomendado con manejo avanzado de errores)\n- **Autenticaci\u00f3n Autom\u00e1tica** - Autenticaci\u00f3n basada en tokens con renovaci\u00f3n autom\u00e1tica\n- **Cobertura Completa de API** - Acceso a todos los endpoints de la API de Datadis\n- **Manejo Robusto de Errores** - V2 incluye manejo espec\u00edfico de errores por distribuidor\n- **Par\u00e1metros Flexibles** - Acepta tipos Python nativos (datetime, int, float) adem\u00e1s de strings\n- **Seguridad de Tipos** - Type hints completos y modelos Pydantic para validaci\u00f3n de datos\n- **Context Managers** - Gesti\u00f3n autom\u00e1tica de recursos con declaraciones `with`\n- **Python 3.9+** - Compatible con versiones modernas de Python\n- **Normalizaci\u00f3n de Texto** - Manejo autom\u00e1tico de acentos espa\u00f1oles y caracteres especiales\n- **Datos de Energ\u00eda Reactiva** - Acceso exclusivo en V2 para an\u00e1lisis energ\u00e9tico avanzado\n\n## Instalaci\u00f3n\n\n```bash\npip install ctr-datadis\n```\n\n## Inicio R\u00e1pido\n\n### Cliente V1 (B\u00e1sico)\n\n```python\nfrom datadis_python.client.v1.simple_client import SimpleDatadisClientV1\n\n# Usar context manager (recomendado)\nwith SimpleDatadisClientV1(username=\"12345678A\", password=\"tu_password\") as client:\n    # Obtener puntos de suministro\n    supplies = client.get_supplies()\n    print(f\"Encontrados {len(supplies)} puntos de suministro\")\n\n    if supplies:\n        # Obtener consumo anual (formato mensual OBLIGATORIO)\n        consumption = client.get_consumption(\n            cups=supplies[0].cups,\n            distributor_code=supplies[0].distributorCode,\n            date_from=\"2024/01\",  # Enero 2024\n            date_to=\"2024/12\"     # Diciembre 2024\n        )\n\n        total_kwh = sum(c.consumptionKWh for c in consumption if c.consumptionKWh)\n        print(f\"Consumo total 2024: {total_kwh:.2f} kWh\")\n```\n\n### Cliente V2 (Recomendado - con manejo de errores mejorado)\n\n```python\nfrom datadis_python.client.v2.simple_client import SimpleDatadisClientV2\n\nwith SimpleDatadisClientV2(username=\"12345678A\", password=\"tu_password\") as client:\n    # Obtener suministros con manejo de errores\n    supplies_response = client.get_supplies()\n\n    print(f\"Suministros obtenidos: {len(supplies_response.supplies)}\")\n\n    # Verificar errores por distribuidor (exclusivo V2)\n    if supplies_response.distributor_error:\n        for error in supplies_response.distributor_error:\n            print(f\"Error en {error.distributorName}: {error.errorDescription}\")\n\n    if supplies_response.supplies:\n        supply = supplies_response.supplies[0]\n\n        # Obtener consumo con manejo robusto de errores\n        consumption_response = client.get_consumption(\n            cups=supply.cups,\n            distributor_code=supply.distributorCode,\n            date_from=\"2024/01\",\n            date_to=\"2024/12\"\n        )\n\n        if consumption_response.time_curve:\n            total_kwh = sum(c.consumptionKWh for c in consumption_response.time_curve\n                          if c.consumptionKWh)\n            print(f\"Consumo total 2024: {total_kwh:.2f} kWh\")\n\n        # Funcionalidad exclusiva V2: Energ\u00eda reactiva\n        reactive_data = client.get_reactive_data(\n            cups=supply.cups,\n            distributor_code=supply.distributorCode,\n            date_from=\"2024/01\",\n            date_to=\"2024/12\"\n        )\n        print(f\"Datos de energ\u00eda reactiva: {len(reactive_data)} registros\")\n```\n\n## M\u00e9todos Disponibles\n\n### Informaci\u00f3n de Suministro\n```python\n# Obtener todos los puntos de suministro\nsupplies = client.get_supplies()\n\n# Obtener detalles del contrato para un CUPS espec\u00edfico\ncontract = client.get_contract_detail(cups=\"ES1234...\", distributor_code=\"2\")\n```\n\n### Datos de Consumo\n```python\nfrom datetime import datetime, date\n\n# Obtener datos de consumo con fechas mensuales (OBLIGATORIO)\nconsumption = client.get_consumption(\n    cups=\"ES1234000000000001JN0F\",\n    distributor_code=2,             # int o string\n    date_from=datetime(2024, 1, 1), # datetime (solo primer d\u00eda), date o string YYYY/MM\n    date_to=datetime(2024, 2, 1),   # datetime (solo primer d\u00eda), date o string YYYY/MM\n    measurement_type=0,             # int, float o string\n    point_type=1                    # int, float o string (opcional)\n)\n\n# Obtener datos de potencia m\u00e1xima\nmax_power = client.get_max_power(\n    cups=\"ES1234000000000001JN0F\",\n    distributor_code=2,             # int o string\n    date_from=datetime(2024, 1, 1), # datetime (solo primer d\u00eda), date o string YYYY/MM\n    date_to=datetime(2024, 2, 1)    # datetime (solo primer d\u00eda), date o string YYYY/MM\n)\n```\n\n### Informaci\u00f3n de Distribuidoras\n```python\n# Obtener distribuidoras disponibles\ndistributors = client.get_distributors()\n```\n\n## Tipos de Par\u00e1metros Flexibles\n\nEl SDK acepta m\u00faltiples tipos de par\u00e1metros para mayor comodidad, manteniendo 100% de compatibilidad hacia atr\u00e1s:\n\n### Fechas (IMPORTANTE: Solo formato mensual)\n\nLa API de Datadis **SOLO acepta fechas mensuales**. No es posible especificar d\u00edas espec\u00edficos.\n\n```python\n# ESTAS YA NO SON V\u00c1LIDAS (contienen d\u00edas espec\u00edficos):\n# date_from = \"2024/01/15\"           # RECHAZADO: contiene d\u00eda espec\u00edfico\n# date_from = datetime(2024, 1, 15)  # RECHAZADO: contiene d\u00eda espec\u00edfico\n# date_from = date(2024, 1, 15)      # RECHAZADO: contiene d\u00eda espec\u00edfico\n\n# SOLO ESTAS SON V\u00c1LIDAS (formato mensual):\ndate_from = \"2024/01\"              # String YYYY/MM (RECOMENDADO)\ndate_from = datetime(2024, 1, 1)   # datetime primer d\u00eda del mes (se convierte a 2024/01)\ndate_from = date(2024, 1, 1)       # date primer d\u00eda del mes (se convierte a 2024/01)\n```\n\n### N\u00fameros\n```python\n# Measurement type, point type, etc.:\nmeasurement_type = \"0\"             # String tradicional\nmeasurement_type = 0               # int\nmeasurement_type = 0.0             # float\n\n# Distributor code:\ndistributor_code = \"2\"             # String tradicional\ndistributor_code = 2               # int\n```\n\n### Conversi\u00f3n Autom\u00e1tica\n- Las fechas `datetime`/`date` se convierten autom\u00e1ticamente al formato API mensual (YYYY/MM)\n- **IMPORTANTE**: Solo se aceptan `datetime`/`date` del primer d\u00eda del mes (d\u00eda 1)\n- Los n\u00fameros `int`/`float` se convierten a strings\n- Los strings se validan para asegurar formato mensual correcto (YYYY/MM)\n- **Validaci\u00f3n estricta** - fechas con d\u00edas espec\u00edficos ser\u00e1n rechazadas\n\n## Modelos de Datos\n\nEl SDK incluye modelos Pydantic para manejo seguro de tipos:\n\n- `SupplyData` - Informaci\u00f3n de puntos de suministro\n- `ConsumptionData` - Registros de consumo energ\u00e9tico\n- `ContractData` - Detalles del contrato\n- `MaxPowerData` - Datos de demanda de potencia m\u00e1xima\n\n## Manejo de Errores\n\n```python\nfrom datadis_python.exceptions import DatadisError, AuthenticationError, APIError\n\ntry:\n    supplies = client.get_supplies()\nexcept AuthenticationError:\n    print(\"Credenciales inv\u00e1lidas\")\nexcept APIError as e:\n    print(f\"Error de API: {e}\")\nexcept DatadisError as e:\n    print(f\"Error de Datadis: {e}\")\n```\n\n## Requisitos\n\n- Python 3.9 o superior\n- Credenciales v\u00e1lidas de cuenta Datadis\n- Conexi\u00f3n a internet\n\n## Limitaciones de la API\n\n- Los datos est\u00e1n disponibles solo para los \u00faltimos 2 a\u00f1os\n- **CR\u00cdTICO**: El formato de fecha DEBE ser YYYY/MM (solo datos mensuales, NO diarios)\n- Fechas con d\u00edas espec\u00edficos (ej: \"2024/01/15\") ser\u00e1n rechazadas autom\u00e1ticamente\n- La plataforma Datadis aplica limitaci\u00f3n de velocidad (rate limiting)\n- La mayor\u00eda de operaciones requieren un c\u00f3digo de distribuidora\n\n## Documentaci\u00f3n\n\n- **Documentaci\u00f3n Completa**: [https://ctr-datadis.readthedocs.io](https://ctr-datadis.readthedocs.io)\n- **Referencia de API**: Documentaci\u00f3n detallada de la API con ejemplos\n- **Ejemplos**: Tutoriales paso a paso y casos de uso\n- **Soluci\u00f3n de Problemas**: Problemas comunes y soluciones\n\n## Comparaci\u00f3n de Versiones\n\n| Caracter\u00edstica | Cliente V1 | Cliente V2 |\n|----------------|------------|------------|\n| **Datos de Consumo** | \u2713 | \u2713 |\n| **Informaci\u00f3n de Suministro** | \u2713 | \u2713 |\n| **Detalles del Contrato** | \u2713 | \u2713 |\n| **Datos de Potencia M\u00e1xima** | \u2713 | \u2713 |\n| **Datos de Energ\u00eda Reactiva** | \u2717 | \u2713 |\n| **Manejo de Errores por Distribuidor** | \u2717 | \u2713 |\n| **Respuestas Estructuradas** | \u2717 | \u2713 |\n| **Informaci\u00f3n de Errores Detallada** | \u2717 | \u2713 |\n| **Soporte para NIFs Autorizados** | Limitado | \u2713 |\n| **Tipo de Respuesta** | Lista simple | Objeto estructurado |\n\n### \u00bfCu\u00e1l elegir?\n\n**Usa Cliente V1 cuando:**\n- Migres c\u00f3digo existente\n- Necesites respuestas simples (listas directas)\n- Implementes scripts b\u00e1sicos\n- Solo requieras datos de consumo est\u00e1ndar\n\n**Usa Cliente V2 cuando:** (Recomendado)\n- Desarrolles aplicaciones de producci\u00f3n\n- Necesites manejo robusto de errores\n- Quieras acceso a energ\u00eda reactiva\n- Requieras informaci\u00f3n detallada de fallos\n- Trabajes con m\u00faltiples distribuidores\n\n## Contribuciones\n\nLas contribuciones son bienvenidas! No dudes en enviar un Pull Request.\n\n## Licencia\n\nEste proyecto est\u00e1 licenciado bajo la Licencia MIT - consulta el archivo [LICENSE](LICENSE) para m\u00e1s detalles.\n\n## Descargo de Responsabilidad\n\nEste es un SDK no oficial para la API de Datadis. No est\u00e1 afiliado ni respaldado por Datadis o el gobierno espa\u00f1ol.\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "SDK completo de Python para la API oficial de Datadis - Acceso program\u00e1tico a datos de consumo el\u00e9ctrico espa\u00f1ol",
    "version": "0.4.5",
    "project_urls": {
        "Documentation": "https://ctr-datadis.readthedocs.io",
        "Homepage": "https://github.com/TacoronteRiveroCristian/ctr-datadis",
        "Repository": "https://github.com/TacoronteRiveroCristian/ctr-datadis"
    },
    "split_keywords": [
        "datadis",
        " api",
        " sdk",
        " energia",
        " consumo",
        " electricidad",
        " espa\u00f1a",
        " cups",
        " distribuidora"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "def7f9db3cc1f1ba7e01e15548125f7ef1a0f2599849d52ff15497d2b86a0e2b",
                "md5": "a638c4a9d8fec841ceb739ba6f011a74",
                "sha256": "06a2cfc6d1011ef9dd8b2289719b31ef36d7c0cee7fa6b4448bf1c7f9cb3f191"
            },
            "downloads": -1,
            "filename": "ctr_datadis-0.4.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a638c4a9d8fec841ceb739ba6f011a74",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 114001,
            "upload_time": "2025-10-24T12:49:15",
            "upload_time_iso_8601": "2025-10-24T12:49:15.346450Z",
            "url": "https://files.pythonhosted.org/packages/de/f7/f9db3cc1f1ba7e01e15548125f7ef1a0f2599849d52ff15497d2b86a0e2b/ctr_datadis-0.4.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "413f7b590f441ea1a31cd0d23e3bbf19bed901450f1f01776a4cd11426f9cd6f",
                "md5": "2c53f0f58b3a043803f355cdd2020fc9",
                "sha256": "17634f2079656d6388557f85706edb64f0d66271153995ac987f141ea903cbbb"
            },
            "downloads": -1,
            "filename": "ctr_datadis-0.4.5.tar.gz",
            "has_sig": false,
            "md5_digest": "2c53f0f58b3a043803f355cdd2020fc9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 94602,
            "upload_time": "2025-10-24T12:49:16",
            "upload_time_iso_8601": "2025-10-24T12:49:16.364501Z",
            "url": "https://files.pythonhosted.org/packages/41/3f/7b590f441ea1a31cd0d23e3bbf19bed901450f1f01776a4cd11426f9cd6f/ctr_datadis-0.4.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-24 12:49:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "TacoronteRiveroCristian",
    "github_project": "ctr-datadis",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "ctr-datadis"
}
        
Elapsed time: 3.02003s