Librería Python eco-back
Project description
eco-back
Librería Python para backend con soporte para PostgreSQL/PostGIS, clientes API, manejo de excepciones y logging
Características
- Base de datos: Conexión y operaciones con PostgreSQL
- PostGIS: Operaciones geoespaciales (puntos, polígonos, búsquedas por proximidad)
- Cliente API: Cliente HTTP genérico y cliente específico UNP
- Patrón Repository: Implementación de patrones de diseño para acceso a datos
- Utils: Sistema de excepciones y logging para Django
- Registro: Funciones de trazabilidad para Django REST Framework
Descripción
eco-back es una librería modular que facilita el desarrollo de aplicaciones backend, proporcionando abstracciones para bases de datos geoespaciales, consumo de APIs REST, manejo de excepciones y logging estructurado.
Instalación
Desde PyPI
pip install eco-back
Desde el código fuente
pip install -e .
Para desarrollo
pip install -e ".[dev]"
Uso
Cliente de Consecutivos (UNP)
from eco_back.api import Consecutivo
# Crear cliente
client = Consecutivo(base_url="https://api.unp.example.com")
# Obtener consecutivo
consecutivo = client.obtener(origen=1)
if consecutivo:
print(f"Consecutivo: {consecutivo}")
client.close()
# Forma recomendada: usar context manager
with Consecutivo(base_url="https://api.unp.example.com") as client:
consecutivo = client.obtener(origen=1)
# Usar el consecutivo...
Cliente API Genérico
from eco_back.api import APIConfig, APIClient
config = APIConfig(
base_url="https://api.example.com",
timeout=30,
headers={"Authorization": "Bearer token"}
)
with APIClient(config) as client:
# GET request
data = client.get("/endpoint")
# POST request
result = client.post("/endpoint", json={"key": "value"})
Conexión básica a PostgreSQL
from eco_back.database import DatabaseConfig, DatabaseConnection
config = DatabaseConfig(
host="localhost",
port=5432,
database="mi_base_datos",
user="usuario",
password="password"
)
with DatabaseConnection(config) as db:
resultados = db.execute_query("SELECT * FROM tabla")
for row in resultados:
print(row)
Uso de PostGIS
from eco_back.database import DatabaseConfig, DatabaseConnection, PostGISHelper
config = DatabaseConfig(
host="localhost",
port=5432,
database="mi_db_geo",
user="postgres",
password="password"
)
with DatabaseConnection(config) as db:
postgis = PostGISHelper(db)
# Habilitar PostGIS
postgis.enable_postgis()
# Insertar un punto geográfico
punto_id = postgis.insert_point(
table_name="ubicaciones",
lat=40.4168,
lon=-3.7038,
data={"nombre": "Madrid", "tipo": "ciudad"}
)
# Buscar puntos cercanos (5km)
cercanos = postgis.find_within_distance(
table_name="ubicaciones",
lat=40.4168,
lon=-3.7038,
distance_meters=5000
)
Desarrollo
Ejecutar tests
pytest
Formatear código
black src/ tests/
Linting
flake8 src/ tests/
Type checking
mypy src/
Manejo de excepciones y logging (Django)
from eco_back.utils import (
ServiceValidationError,
handle_service_validation_error,
_log_warn
)
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
@handle_service_validation_error
def mi_vista(request, user_id):
try:
_log_warn(f"Buscando usuario {user_id}", level="info")
usuario = Usuario.objects.get(id=user_id)
return Response({"usuario": usuario.username})
except Usuario.DoesNotExist:
_log_warn(f"Usuario {user_id} no encontrado", level="warning")
raise ServiceValidationError(
"Usuario no encontrado",
code=404,
context={"user_id": user_id}
)
Trazabilidad de registros (Django)
from eco_back.registro import TrazabilidadRegistroPermiso
from django.urls import path
urlpatterns = [
path('api/trazabilidad/<int:registro_id>/', TrazabilidadRegistroPermiso),
]
Módulos disponibles
eco_back.database- Conexiones y operaciones con PostgreSQL/PostGISeco_back.api- Clientes HTTP y consumo de APIseco_back.documento- Manejo de documentos y anexoseco_back.utils- Excepciones y logging para Djangoeco_back.registro- Funciones de trazabilidad (Django REST Framework)
Para más información, consulta los README de cada módulo:
Licencia
MIT
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
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 eco_back-0.2.2.tar.gz.
File metadata
- Download URL: eco_back-0.2.2.tar.gz
- Upload date:
- Size: 26.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e48cf559fa407f50404a2e5df0c3c47f66291d7ecaad98b2d840ed073b21ecdc
|
|
| MD5 |
4da0d1913cc65f8d5009a5ef67cdf01a
|
|
| BLAKE2b-256 |
ba00413d7401f9202a8de7336dbc90c7a41abb0e074a8c05206eab429e98e6c2
|
File details
Details for the file eco_back-0.2.2-py3-none-any.whl.
File metadata
- Download URL: eco_back-0.2.2-py3-none-any.whl
- Upload date:
- Size: 24.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbc76e1687ec38ea704bfd5c945fb7c58edc5c16da2b2f971d5d5271c81a640c
|
|
| MD5 |
ca0c6a9d7dbb2ef6d0c979fc0db0c6f9
|
|
| BLAKE2b-256 |
764810ac0584fe0c1d328248064cca351e264c65a5763f4c191353b88c84ed38
|