dk-azure-services-dataknow


Namedk-azure-services-dataknow JSON
Version 0.0.3 PyPI version JSON
download
home_pageNone
SummaryPaquete para facilitar la integración con servicios de Azure
upload_time2025-07-31 22:13:26
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords azure cosmos storage keyvault datalake search
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.05795s