# DK Azure Services Package
Paquete Python para facilitar la integración con servicios de Azure, proporcionando conectores seguros y fáciles de usar para los principales servicios de Azure.
## Servicios Soportados
- **Azure Cosmos DB** - Base de datos NoSQL distribuida globalmente
- **Azure OpenAI** - Servicios de inteligencia artificial (próximamente)
- **Azure Blob Storage** - Almacenamiento de objetos en la nube (próximamente)
- **Azure Key Vault** - Gestión segura de secretos y certificados
## Características Principales
✅ **Autenticación Centralizada** - Usa `DefaultAzureCredential` para autenticación segura
✅ **Configuración por Entornos** - Soporte para múltiples entornos (dev, prod, etc.)
✅ **Gestión de Secretos** - Integración automática con Azure Key Vault
✅ **Manejo de Errores** - Excepciones personalizadas para mejor debugging
✅ **Documentación Completa** - Docstrings en español
✅ **Type Hints** - Compatibilidad completa con tipado estático
🚀 **100% Asíncrono** - Operaciones concurrentes de alto rendimiento por defecto
⚡ **Operaciones Bulk** - Procesamiento masivo optimizado (10-50x más rápido)
🔧 **Context Managers** - Gestión automática de recursos
🎯 **API Simple** - Una sola forma de hacer las cosas, bien hecha
## Instalación
```bash
pip install dk-azure-services
```
### Instalación para Desarrollo
```bash
git clone https://github.com/yourusername/dk-azure-services.git
cd dk-azure-services
pip install -e .[dev]
```
## Uso Rápido
### Cliente Simplificado (AsyncCosmosDBClient)
```python
import asyncio
from dk_azure_services.cosmos import AsyncCosmosDBClient
from dotenv import load_dotenv
# Requieres tu archivo .env con la variable de entorno: KEY_VAULT_NAME=your-key-vault-name
# En tu Key Vault requieres los secretos:
# cosmos-uri="your-cosmos-uri"
# cosmos-key=your-cosmos-key
load_dotenv(override=True)
async def main():
async with AsyncCosmosDBClient(partition_key_path="/partition_key") as client:
# Crear una base de datos
await client.create_database("mi_base_de_datos")
# Crear un contenedor
await client.create_container("mi_base_de_datos", "mi_contenedor", "/partition_key")
# Crear un documento
documento = {"id": "user123", "name": "Juan", "role": "Developer", "partition_key": "user123"}
await client.create_document("mi_base_de_datos", "mi_contenedor", documento)
# Leer un documento
doc = await client.read_document("mi_base_de_datos", "mi_contenedor", "user123", partition_key="user123")
print("Documento leído:", doc)
asyncio.run(main())
```
---
## Ejemplo Avanzado: Clientes Especializados
Puedes usar clientes especializados para un control más granular sobre bases de datos, contenedores y documentos.
```python
import asyncio
from dk_azure_services.cosmos.database_manager import AsyncDatabaseManager
from dk_azure_services.cosmos.container_manager import AsyncContainerManager
from dk_azure_services.cosmos.documents_manager import AsyncDocumentsManager
async def main():
# Crear base de datos
db_manager = AsyncDatabaseManager(environment="dev")
await db_manager.create_database("ejemplo_db")
# Crear contenedor
container_manager = AsyncContainerManager(environment="dev")
await container_manager.create_container_simple(
database_name="ejemplo_db",
container_name="ejemplo_contenedor",
partition_key_path="/partition_key"
)
# Crear documento
client = AsyncDocumentsManager(environment="dev")
doc = {"id": "user1", "nombre": "Ana", "edad": 28, "partition_key": "user1"}
await client.create_document(doc, "ejemplo_db", "ejemplo_contenedor", partition_key="user1")
# Consultar documentos
docs = await client.query_documents(
"SELECT * FROM c WHERE c.edad >= @edad",
[{"name": "@edad", "value": 18}],
database_name="ejemplo_db",
container_name="ejemplo_contenedor"
)
print("Documentos encontrados:", docs)
# Cerrar conexiones
await client.close()
await container_manager.close()
await db_manager.close()
asyncio.run(main())
```
> **Nota:** Puedes encontrar ejemplos completos y scripts de prueba en la carpeta `examples/02_cosmos` del repositorio.
---
## Configuración
### 🎯 **Variables Estandarizadas Entre Ambientes**
✅ **Mismos nombres** en DEV y PROD
✅ **Solo cambian** valores y Key Vault
✅ **Deployment simplificado**
El paquete busca la configuración en este orden:
1. **Variables de entorno** (ej: `COSMOS_URI`)
2. **Azure Key Vault** (ej: `cosmos-uri`)
3. **Valor por defecto**
### Variables de Entorno (Desarrollo Local)
#### Configuración Estándar:
```bash
# Variables sin prefijo de ambiente
COSMOS_URI=https://your-cosmos-dev.documents.azure.com:443/
COSMOS_KEY=your-cosmos-dev-key
COSMOS_DATABASE=myapp-dev
COSMOS_CONTAINER=documents
COSMOS_PARTITION=/id
# Configuración del entorno
APP_ENV=dev
KEY_VAULT_NAME=your-keyvault-dev
```
### Azure Key Vault (Producción)
#### Secretos por Ambiente:
**DESARROLLO** - Key Vault: `your-keyvault-dev`
- `cosmos-uri`
- `cosmos-key`
- `cosmos-database`
- `cosmos-container`
**PRODUCCIÓN** - Key Vault: `your-keyvault-prod`
- `cosmos-uri` (mismos nombres!)
- `cosmos-key`
- `cosmos-database`
- `cosmos-container`
> 🔄 **Para cambiar ambiente**: Solo actualiza `KEY_VAULT_NAME=your-keyvault-prod`
## Autenticación con Azure
El paquete utiliza `DefaultAzureCredential` que soporta múltiples métodos:
- ✅ Azure CLI (`az login`)
- ✅ Visual Studio Code
- ✅ Managed Identity (en Azure)
- ✅ Variables de entorno
- ✅ Interactive browser
### Configurar Azure CLI (Recomendado para desarrollo)
```bash
az login
```
## Estructura del Proyecto
```
dk_azure_services/
├── __init__.py # Exportaciones principales
├── common/ # Utilidades compartidas
│ ├── auth.py # Autenticación centralizada
│ ├── config.py # Gestión de configuración
│ └── exceptions.py # Excepciones personalizadas
├── cosmos/ # Azure Cosmos DB
│ ├── __init__.py
│ └── client.py # Cliente principal
├── openai/ # Azure OpenAI (próximamente)
├── storage/ # Azure Blob Storage (próximamente)
└── keyvault/ # Azure Key Vault (próximamente)
```
## Ejemplos Avanzados
### Uso con ConfigManager Personalizado
```python
from dk_azure_services.common.config import ConfigManager
from dk_azure_services import CosmosDBClient
# Configuración personalizada
config = ConfigManager(environment="production", key_vault_name="my-vault")
client = CosmosDBClient(config_manager=config)
```
### Operaciones en Lote
```python
# Crear múltiples documentos
documentos = [
{"id": "user1", "name": "Ana", "role": "Manager"},
{"id": "user2", "name": "Carlos", "role": "Developer"},
{"id": "user3", "name": "María", "role": "Designer"}
]
resultados = client.bulk_create_documents(documentos)
print(f"Creados {len(resultados)} documentos")
```
### Información del Contenedor
```python
info = client.get_container_info()
print(f"Entorno: {info['environment']}")
print(f"Base de datos: {info['database_name']}")
print(f"Contenedor: {info['container_name']}")
```
## Desarrollo
### Configurar Entorno de Desarrollo
```bash
# Clonar el repositorio
git clone https://github.com/yourusername/dk-azure-services.git
cd dk-azure-services
# Instalar dependencias de desarrollo
pip install -e .[dev]
# Configurar pre-commit hooks
pre-commit install
```
### Ejecutar Tests
```bash
pytest
```
### Formatear Código
```bash
black dk_azure_services/
isort dk_azure_services/
```
### Verificar Tipado
```bash
mypy dk_azure_services/
```
## ¿Por qué 100% Asíncrono? 🤔
Este paquete fue diseñado desde cero para ser **completamente asíncrono** por estas razones:
### **🎯 Rendimiento Superior**
- **10-50x más rápido** para operaciones en lote
- **Concurrencia nativa** - múltiples operaciones simultáneas
- **Eficiencia de recursos** - menos uso de CPU y memoria
### **🚀 Ideal para Servicios de Azure**
- **Azure Cosmos DB** - Base de datos distribuida (I/O intensivo)
- **Azure OpenAI** - Llamadas a LLMs con alta latencia
- **Azure Blob Storage** - Transferencia de archivos grandes
- **Azure Key Vault** - Operaciones de red para secretos
### **📱 Perfecto para Apps Modernas**
- **FastAPI** - Framework asíncrono por excelencia
- **Starlette** - Base asíncrona sólida
- **Microservicios** - Escalabilidad superior
- **APIs REST** - Mejor throughput
### **🧠 API Más Simple**
- **Una sola forma** de hacer las cosas (bien hecha)
- **Context managers** automáticos
- **Menos decisiones** que tomar al desarrollar
> 💡 **Tip**: Si necesitas compatibilidad síncrona, puedes usar `asyncio.run()` o bibliotecas como `asgiref.sync.sync_to_async()`.
## Roadmap
- [x] Azure Cosmos DB - Cliente asíncrono completo
- [ ] Azure OpenAI - Cliente para chat y embeddings
- [ ] Azure Blob Storage - Cliente para almacenamiento
- [ ] Azure Key Vault - Cliente extendido
- [ ] Azure Service Bus - Mensajería
- [ ] Ejemplos con FastAPI
- [ ] Template de Docker
- [ ] CI/CD con GitHub Actions
## Contribuir
Las contribuciones son bienvenidas. Por favor:
1. Fork el proyecto
2. Crea una branch para tu feature (`git checkout -b feature/amazing-feature`)
3. Commit tus cambios (`git commit -m 'feat: add amazing feature'`)
4. Push a la branch (`git push origin feature/amazing-feature`)
5. Abre un Pull Request
## Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo `LICENSE` para más detalles.
## Autor
**Leonar Santiago Castro** - *Desarrollo inicial* - [GitHub](https://github.com/yourusername)
## Agradecimientos
- Equipo de Azure SDK para Python
- Comunidad de desarrolladores de Azure
- Contribuidores del proyecto
Raw data
{
"_id": null,
"home_page": null,
"name": "dk-azure-services-dataknow",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "azure, cosmos, storage, keyvault, datalake, search",
"author": null,
"author_email": "Leonar Santiago Castro <leonar.castro@dataknow.co>",
"download_url": "https://files.pythonhosted.org/packages/a7/9c/be692866d72153992cc14e36b8bba9424a4112e501f1dcc0d5dfc25c7cdf/dk_azure_services_dataknow-0.0.3.tar.gz",
"platform": null,
"description": "# DK Azure Services Package\r\n\r\nPaquete Python para facilitar la integraci\u00f3n con servicios de Azure, proporcionando conectores seguros y f\u00e1ciles de usar para los principales servicios de Azure.\r\n\r\n## Servicios Soportados\r\n\r\n- **Azure Cosmos DB** - Base de datos NoSQL distribuida globalmente\r\n- **Azure OpenAI** - Servicios de inteligencia artificial (pr\u00f3ximamente)\r\n- **Azure Blob Storage** - Almacenamiento de objetos en la nube (pr\u00f3ximamente)\r\n- **Azure Key Vault** - Gesti\u00f3n segura de secretos y certificados\r\n\r\n## Caracter\u00edsticas Principales\r\n\r\n\u2705 **Autenticaci\u00f3n Centralizada** - Usa `DefaultAzureCredential` para autenticaci\u00f3n segura \r\n\u2705 **Configuraci\u00f3n por Entornos** - Soporte para m\u00faltiples entornos (dev, prod, etc.) \r\n\u2705 **Gesti\u00f3n de Secretos** - Integraci\u00f3n autom\u00e1tica con Azure Key Vault \r\n\u2705 **Manejo de Errores** - Excepciones personalizadas para mejor debugging \r\n\u2705 **Documentaci\u00f3n Completa** - Docstrings en espa\u00f1ol \r\n\u2705 **Type Hints** - Compatibilidad completa con tipado est\u00e1tico \r\n\ud83d\ude80 **100% As\u00edncrono** - Operaciones concurrentes de alto rendimiento por defecto \r\n\u26a1 **Operaciones Bulk** - Procesamiento masivo optimizado (10-50x m\u00e1s r\u00e1pido) \r\n\ud83d\udd27 **Context Managers** - Gesti\u00f3n autom\u00e1tica de recursos \r\n\ud83c\udfaf **API Simple** - Una sola forma de hacer las cosas, bien hecha \r\n\r\n## Instalaci\u00f3n\r\n\r\n```bash\r\npip install dk-azure-services\r\n```\r\n\r\n### Instalaci\u00f3n para Desarrollo\r\n\r\n```bash\r\ngit clone https://github.com/yourusername/dk-azure-services.git\r\ncd dk-azure-services\r\npip install -e .[dev]\r\n```\r\n\r\n## Uso R\u00e1pido\r\n\r\n### Cliente Simplificado (AsyncCosmosDBClient)\r\n\r\n```python\r\nimport asyncio\r\nfrom dk_azure_services.cosmos import AsyncCosmosDBClient\r\nfrom dotenv import load_dotenv\r\n\r\n# Requieres tu archivo .env con la variable de entorno: KEY_VAULT_NAME=your-key-vault-name\r\n# En tu Key Vault requieres los secretos:\r\n# cosmos-uri=\"your-cosmos-uri\"\r\n# cosmos-key=your-cosmos-key\r\n\r\n\r\nload_dotenv(override=True)\r\n\r\nasync def main():\r\n async with AsyncCosmosDBClient(partition_key_path=\"/partition_key\") as client:\r\n # Crear una base de datos\r\n await client.create_database(\"mi_base_de_datos\")\r\n\r\n # Crear un contenedor\r\n await client.create_container(\"mi_base_de_datos\", \"mi_contenedor\", \"/partition_key\")\r\n\r\n # Crear un documento\r\n documento = {\"id\": \"user123\", \"name\": \"Juan\", \"role\": \"Developer\", \"partition_key\": \"user123\"}\r\n await client.create_document(\"mi_base_de_datos\", \"mi_contenedor\", documento)\r\n\r\n # Leer un documento\r\n doc = await client.read_document(\"mi_base_de_datos\", \"mi_contenedor\", \"user123\", partition_key=\"user123\")\r\n print(\"Documento le\u00eddo:\", doc)\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n---\r\n\r\n## Ejemplo Avanzado: Clientes Especializados\r\n\r\nPuedes usar clientes especializados para un control m\u00e1s granular sobre bases de datos, contenedores y documentos.\r\n\r\n```python\r\nimport asyncio\r\nfrom dk_azure_services.cosmos.database_manager import AsyncDatabaseManager\r\nfrom dk_azure_services.cosmos.container_manager import AsyncContainerManager\r\nfrom dk_azure_services.cosmos.documents_manager import AsyncDocumentsManager\r\n\r\nasync def main():\r\n # Crear base de datos\r\n db_manager = AsyncDatabaseManager(environment=\"dev\")\r\n await db_manager.create_database(\"ejemplo_db\")\r\n\r\n # Crear contenedor\r\n container_manager = AsyncContainerManager(environment=\"dev\")\r\n await container_manager.create_container_simple(\r\n database_name=\"ejemplo_db\",\r\n container_name=\"ejemplo_contenedor\",\r\n partition_key_path=\"/partition_key\"\r\n )\r\n\r\n # Crear documento\r\n client = AsyncDocumentsManager(environment=\"dev\")\r\n doc = {\"id\": \"user1\", \"nombre\": \"Ana\", \"edad\": 28, \"partition_key\": \"user1\"}\r\n await client.create_document(doc, \"ejemplo_db\", \"ejemplo_contenedor\", partition_key=\"user1\")\r\n\r\n # Consultar documentos\r\n docs = await client.query_documents(\r\n \"SELECT * FROM c WHERE c.edad >= @edad\",\r\n [{\"name\": \"@edad\", \"value\": 18}],\r\n database_name=\"ejemplo_db\",\r\n container_name=\"ejemplo_contenedor\"\r\n )\r\n print(\"Documentos encontrados:\", docs)\r\n\r\n # Cerrar conexiones\r\n await client.close()\r\n await container_manager.close()\r\n await db_manager.close()\r\n\r\nasyncio.run(main())\r\n```\r\n\r\n> **Nota:** Puedes encontrar ejemplos completos y scripts de prueba en la carpeta `examples/02_cosmos` del repositorio.\r\n\r\n---\r\n\r\n## Configuraci\u00f3n\r\n\r\n### \ud83c\udfaf **Variables Estandarizadas Entre Ambientes**\r\n\r\n\u2705 **Mismos nombres** en DEV y PROD \r\n\u2705 **Solo cambian** valores y Key Vault \r\n\u2705 **Deployment simplificado**\r\n\r\nEl paquete busca la configuraci\u00f3n en este orden:\r\n\r\n1. **Variables de entorno** (ej: `COSMOS_URI`)\r\n2. **Azure Key Vault** (ej: `cosmos-uri`)\r\n3. **Valor por defecto**\r\n\r\n### Variables de Entorno (Desarrollo Local)\r\n\r\n#### Configuraci\u00f3n Est\u00e1ndar:\r\n```bash\r\n# Variables sin prefijo de ambiente\r\nCOSMOS_URI=https://your-cosmos-dev.documents.azure.com:443/\r\nCOSMOS_KEY=your-cosmos-dev-key\r\nCOSMOS_DATABASE=myapp-dev\r\nCOSMOS_CONTAINER=documents\r\nCOSMOS_PARTITION=/id\r\n\r\n# Configuraci\u00f3n del entorno\r\nAPP_ENV=dev\r\nKEY_VAULT_NAME=your-keyvault-dev\r\n```\r\n\r\n### Azure Key Vault (Producci\u00f3n)\r\n\r\n#### Secretos por Ambiente:\r\n\r\n**DESARROLLO** - Key Vault: `your-keyvault-dev`\r\n- `cosmos-uri`\r\n- `cosmos-key`\r\n- `cosmos-database`\r\n- `cosmos-container`\r\n\r\n**PRODUCCI\u00d3N** - Key Vault: `your-keyvault-prod`\r\n- `cosmos-uri` (mismos nombres!)\r\n- `cosmos-key`\r\n- `cosmos-database`\r\n- `cosmos-container`\r\n\r\n> \ud83d\udd04 **Para cambiar ambiente**: Solo actualiza `KEY_VAULT_NAME=your-keyvault-prod`\r\n\r\n## Autenticaci\u00f3n con Azure\r\n\r\nEl paquete utiliza `DefaultAzureCredential` que soporta m\u00faltiples m\u00e9todos:\r\n\r\n- \u2705 Azure CLI (`az login`)\r\n- \u2705 Visual Studio Code\r\n- \u2705 Managed Identity (en Azure)\r\n- \u2705 Variables de entorno\r\n- \u2705 Interactive browser\r\n\r\n### Configurar Azure CLI (Recomendado para desarrollo)\r\n\r\n```bash\r\naz login\r\n```\r\n\r\n## Estructura del Proyecto\r\n\r\n```\r\ndk_azure_services/\r\n\u251c\u2500\u2500 __init__.py # Exportaciones principales\r\n\u251c\u2500\u2500 common/ # Utilidades compartidas\r\n\u2502 \u251c\u2500\u2500 auth.py # Autenticaci\u00f3n centralizada\r\n\u2502 \u251c\u2500\u2500 config.py # Gesti\u00f3n de configuraci\u00f3n\r\n\u2502 \u2514\u2500\u2500 exceptions.py # Excepciones personalizadas\r\n\u251c\u2500\u2500 cosmos/ # Azure Cosmos DB\r\n\u2502 \u251c\u2500\u2500 __init__.py\r\n\u2502 \u2514\u2500\u2500 client.py # Cliente principal\r\n\u251c\u2500\u2500 openai/ # Azure OpenAI (pr\u00f3ximamente)\r\n\u251c\u2500\u2500 storage/ # Azure Blob Storage (pr\u00f3ximamente)\r\n\u2514\u2500\u2500 keyvault/ # Azure Key Vault (pr\u00f3ximamente)\r\n```\r\n\r\n## Ejemplos Avanzados\r\n\r\n### Uso con ConfigManager Personalizado\r\n\r\n```python\r\nfrom dk_azure_services.common.config import ConfigManager\r\nfrom dk_azure_services import CosmosDBClient\r\n\r\n# Configuraci\u00f3n personalizada\r\nconfig = ConfigManager(environment=\"production\", key_vault_name=\"my-vault\")\r\nclient = CosmosDBClient(config_manager=config)\r\n```\r\n\r\n### Operaciones en Lote\r\n\r\n```python\r\n# Crear m\u00faltiples documentos\r\ndocumentos = [\r\n {\"id\": \"user1\", \"name\": \"Ana\", \"role\": \"Manager\"},\r\n {\"id\": \"user2\", \"name\": \"Carlos\", \"role\": \"Developer\"},\r\n {\"id\": \"user3\", \"name\": \"Mar\u00eda\", \"role\": \"Designer\"}\r\n]\r\n\r\nresultados = client.bulk_create_documents(documentos)\r\nprint(f\"Creados {len(resultados)} documentos\")\r\n```\r\n\r\n### Informaci\u00f3n del Contenedor\r\n\r\n```python\r\ninfo = client.get_container_info()\r\nprint(f\"Entorno: {info['environment']}\")\r\nprint(f\"Base de datos: {info['database_name']}\")\r\nprint(f\"Contenedor: {info['container_name']}\")\r\n```\r\n\r\n## Desarrollo\r\n\r\n### Configurar Entorno de Desarrollo\r\n\r\n```bash\r\n# Clonar el repositorio\r\ngit clone https://github.com/yourusername/dk-azure-services.git\r\ncd dk-azure-services\r\n\r\n# Instalar dependencias de desarrollo\r\npip install -e .[dev]\r\n\r\n# Configurar pre-commit hooks\r\npre-commit install\r\n```\r\n\r\n### Ejecutar Tests\r\n\r\n```bash\r\npytest\r\n```\r\n\r\n### Formatear C\u00f3digo\r\n\r\n```bash\r\nblack dk_azure_services/\r\nisort dk_azure_services/\r\n```\r\n\r\n### Verificar Tipado\r\n\r\n```bash\r\nmypy dk_azure_services/\r\n```\r\n\r\n## \u00bfPor qu\u00e9 100% As\u00edncrono? \ud83e\udd14\r\n\r\nEste paquete fue dise\u00f1ado desde cero para ser **completamente as\u00edncrono** por estas razones:\r\n\r\n### **\ud83c\udfaf Rendimiento Superior**\r\n- **10-50x m\u00e1s r\u00e1pido** para operaciones en lote\r\n- **Concurrencia nativa** - m\u00faltiples operaciones simult\u00e1neas\r\n- **Eficiencia de recursos** - menos uso de CPU y memoria\r\n\r\n### **\ud83d\ude80 Ideal para Servicios de Azure**\r\n- **Azure Cosmos DB** - Base de datos distribuida (I/O intensivo)\r\n- **Azure OpenAI** - Llamadas a LLMs con alta latencia\r\n- **Azure Blob Storage** - Transferencia de archivos grandes\r\n- **Azure Key Vault** - Operaciones de red para secretos\r\n\r\n### **\ud83d\udcf1 Perfecto para Apps Modernas**\r\n- **FastAPI** - Framework as\u00edncrono por excelencia \r\n- **Starlette** - Base as\u00edncrona s\u00f3lida\r\n- **Microservicios** - Escalabilidad superior\r\n- **APIs REST** - Mejor throughput\r\n\r\n### **\ud83e\udde0 API M\u00e1s Simple**\r\n- **Una sola forma** de hacer las cosas (bien hecha)\r\n- **Context managers** autom\u00e1ticos\r\n- **Menos decisiones** que tomar al desarrollar\r\n\r\n> \ud83d\udca1 **Tip**: Si necesitas compatibilidad s\u00edncrona, puedes usar `asyncio.run()` o bibliotecas como `asgiref.sync.sync_to_async()`.\r\n\r\n## Roadmap\r\n\r\n- [x] Azure Cosmos DB - Cliente as\u00edncrono completo\r\n- [ ] Azure OpenAI - Cliente para chat y embeddings\r\n- [ ] Azure Blob Storage - Cliente para almacenamiento\r\n- [ ] Azure Key Vault - Cliente extendido\r\n- [ ] Azure Service Bus - Mensajer\u00eda\r\n- [ ] Ejemplos con FastAPI\r\n- [ ] Template de Docker\r\n- [ ] CI/CD con GitHub Actions\r\n\r\n## Contribuir\r\n\r\nLas contribuciones son bienvenidas. Por favor:\r\n\r\n1. Fork el proyecto\r\n2. Crea una branch para tu feature (`git checkout -b feature/amazing-feature`)\r\n3. Commit tus cambios (`git commit -m 'feat: add amazing feature'`)\r\n4. Push a la branch (`git push origin feature/amazing-feature`)\r\n5. Abre un Pull Request\r\n\r\n## Licencia\r\n\r\nEste proyecto est\u00e1 bajo la Licencia MIT. Ver el archivo `LICENSE` para m\u00e1s detalles.\r\n\r\n## Autor\r\n\r\n**Leonar Santiago Castro** - *Desarrollo inicial* - [GitHub](https://github.com/yourusername)\r\n\r\n## Agradecimientos\r\n\r\n- Equipo de Azure SDK para Python\r\n- Comunidad de desarrolladores de Azure\r\n- Contribuidores del proyecto \r\n",
"bugtrack_url": null,
"license": null,
"summary": "Paquete para facilitar la integraci\u00f3n con servicios de Azure",
"version": "0.0.3",
"project_urls": {
"Bug Tracker": "https://dev.azure.com/DataKnow/Dataknow%20-%20Repositorio%20General%20de%20Proyectos/_workitems",
"Documentation": "https://dev.azure.com/DataKnow/Dataknow%20-%20Repositorio%20General%20de%20Proyectos/_wiki",
"Homepage": "https://dev.azure.com/DataKnow/Dataknow%20-%20Repositorio%20General%20de%20Proyectos/_git/dk-azure-services",
"Repository": "https://dev.azure.com/DataKnow/Dataknow%20-%20Repositorio%20General%20de%20Proyectos/_git/dk-azure-services"
},
"split_keywords": [
"azure",
" cosmos",
" storage",
" keyvault",
" datalake",
" search"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3c514ec32589ba997075977e0d8174c3a33b64c808fe69ba383ef638a187afa6",
"md5": "27e1af529c7b2d3d1c7459e3f789a717",
"sha256": "2209e3adf4da759f6ccdd1c88b69ddcf86abe1cd9b1f341879a82c315922159d"
},
"downloads": -1,
"filename": "dk_azure_services_dataknow-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "27e1af529c7b2d3d1c7459e3f789a717",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 39326,
"upload_time": "2025-07-31T22:13:25",
"upload_time_iso_8601": "2025-07-31T22:13:25.741059Z",
"url": "https://files.pythonhosted.org/packages/3c/51/4ec32589ba997075977e0d8174c3a33b64c808fe69ba383ef638a187afa6/dk_azure_services_dataknow-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a79cbe692866d72153992cc14e36b8bba9424a4112e501f1dcc0d5dfc25c7cdf",
"md5": "971b02c67863de55cb2e088922090a75",
"sha256": "b308a46480b65b1e0abf062a9e4323bf9530c11f47c7a6b4c7eebd8e3fc847f2"
},
"downloads": -1,
"filename": "dk_azure_services_dataknow-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "971b02c67863de55cb2e088922090a75",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 34988,
"upload_time": "2025-07-31T22:13:26",
"upload_time_iso_8601": "2025-07-31T22:13:26.972273Z",
"url": "https://files.pythonhosted.org/packages/a7/9c/be692866d72153992cc14e36b8bba9424a4112e501f1dcc0d5dfc25c7cdf/dk_azure_services_dataknow-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-31 22:13:26",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "dk-azure-services-dataknow"
}