Metadata-Version: 2.5
Name: joblogic-automation-services
Version: 0.1.0
Summary: Reusable SDK for Joblogic automation projects
License-Expression: MIT
Requires-Python: >=3.11
Requires-Dist: aiohttp>=3.9
Requires-Dist: pydantic>=2.0
Provides-Extra: all
Requires-Dist: aioodbc>=0.4; extra == 'all'
Requires-Dist: asyncpg>=0.29; extra == 'all'
Requires-Dist: azure-appconfiguration>=1.7; extra == 'all'
Requires-Dist: azure-identity>=1.15; extra == 'all'
Requires-Dist: fastapi>=0.100; extra == 'all'
Requires-Dist: motor>=3.3; extra == 'all'
Requires-Dist: polars>=1.0; extra == 'all'
Requires-Dist: redis>=5.0; extra == 'all'
Provides-Extra: appconfig
Requires-Dist: azure-appconfiguration>=1.7; extra == 'appconfig'
Provides-Extra: audit
Requires-Dist: fastapi>=0.100; extra == 'audit'
Requires-Dist: motor>=3.3; extra == 'audit'
Provides-Extra: auth
Requires-Dist: fastapi>=0.100; extra == 'auth'
Provides-Extra: db
Requires-Dist: asyncpg>=0.29; extra == 'db'
Requires-Dist: azure-identity>=1.15; extra == 'db'
Provides-Extra: dev
Requires-Dist: httpx>=0.24; extra == 'dev'
Requires-Dist: mongomock-motor>=0.0.20; extra == 'dev'
Requires-Dist: polars>=1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: joblogic-db
Requires-Dist: aioodbc>=0.4; extra == 'joblogic-db'
Requires-Dist: polars>=1.0; extra == 'joblogic-db'
Provides-Extra: notifications
Provides-Extra: redis
Requires-Dist: azure-identity>=1.15; extra == 'redis'
Requires-Dist: redis>=5.0; extra == 'redis'
Description-Content-Type: text/markdown

# joblogic-automation-sdk

Reusable SDK for Joblogic automation projects. Provides common infrastructure: Jicro client, OData client, SharePoint/OneDrive/mailbox client, audit logging (Cosmos DB), Slack/Teams notifications, PostgreSQL helpers, auth middleware, and shared enums/utilities.

## Installation

```bash
# Full install (all extras)
pip install "joblogic-automation-sdk[all] @ git+https://joblogicltd@dev.azure.com/joblogicltd/JobLogic%20Automations/_git/joblogic-automation-sdk@uat"

# Core only (JicroClient, ExecutionResult, config)
pip install "joblogic-automation-sdk @ git+https://joblogicltd@dev.azure.com/joblogicltd/JobLogic%20Automations/_git/joblogic-automation-sdk@uat"

# Selective extras
pip install "joblogic-automation-sdk[audit,db] @ git+https://joblogicltd@dev.azure.com/joblogicltd/JobLogic%20Automations/_git/joblogic-automation-sdk@uat"
```

## Quick Start

```python
from joblogic_sdk.jicro import JicroClient, JicroError
from joblogic_sdk.config import get_settings

async with JicroClient() as client:
    result = await client.execute(
        tenant_id=get_settings().tenant_id,
        service_name="core",
        message_signature="SearchJobMsg",
        payload={"searchText": "example", "pageSize": 10},
    )
```

## Environment Variables

| Variable | Description |
|---|---|
| `AUTOMATION_NAME` | Unique identifier for this automation. Used by the SDK to resolve the app's specific configuration from App Configuration under the key `Automation/{AUTOMATION_NAME}`. Must match the key name used in App Configuration exactly. |
| `AZURE_APP_CONFIG_CONNECTION_STRING` | Key Vault-backed secret reference to the Azure App Configuration connection string. The application uses this to pull all other config at startup. |
| `APPLICATION_ENVIRONMENT` | Target environment. Must be one of `Uat`, `Staging`, or `Live` — used directly as the Azure App Configuration label to load the correct environment's values. |


## Development

```bash
# Install with dev dependencies
pip install -e ".[all,dev]"

# Run tests
pytest tests/ -v
```