# sqgen_risk

[![Release](https://img.shields.io/github/v/release/fabeider/saas-skd)](https://img.shields.io/github/v/release/fabeider/saas-skd)
[![Build status](https://img.shields.io/github/actions/workflow/status/fabeider/saas-skd/main.yml?branch=main)](https://github.com/fabeider/saas-skd/actions/workflows/main.yml?query=branch%3Amain)
[![codecov](https://codecov.io/gh/fabeider/saas-skd/branch/main/graph/badge.svg)](https://codecov.io/gh/fabeider/saas-skd)
[![Commit activity](https://img.shields.io/github/commit-activity/m/fabeider/saas-skd)](https://img.shields.io/github/commit-activity/m/fabeider/saas-skd)
[![License](https://img.shields.io/github/license/fabeider/saas-skd)](https://img.shields.io/github/license/fabeider/saas-skd)

This is a template repository for Python projects that use uv for their dependency management.

- **Github repository**: <https://github.com/SquareGen-LLC/saas-sdk/>
- **Documentation** <https://github.com/SquareGen-LLC/saas-sdk/blob/main/README.md>

## Getting started with your project

### 1. Create a New Repository

First, create a repository on GitHub with the same name as this project, and then run the following commands:

```bash
git init -b main
git add .
git commit -m "init commit"
git remote add origin git@github.com:fabeider/saas-skd.git
git push -u origin main
```

### 2. Set Up Your Development Environment

Then, install the environment and the pre-commit hooks with

```bash
make install
```

This will also generate your `uv.lock` file

### 3. Run the pre-commit hooks

Initially, the CI/CD pipeline might be failing due to formatting issues. To resolve those run:

```bash
uv run pre-commit run -a
```

### 4. Commit the changes

Lastly, commit the changes made by the two steps above to your repository.

```bash
git add .
git commit -m 'Fix formatting issues'
git push origin main
```

You are now ready to start development on your project!
The CI/CD pipeline will be triggered when you open a pull request, merge to main, or when you create a new release.

To finalize the set-up for publishing to PyPI, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/publishing/#set-up-for-pypi).
For activating the automatic documentation with MkDocs, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/mkdocs/#enabling-the-documentation-on-github).
To enable the code coverage reports, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/codecov/).

## Basic Usage Example

Below is a basic example of how to use the SDK to authenticate, list models, submit an inference, and retrieve results:

```python
from os import getenv
from sqgen_risk.client import Client

# Initialize the client with base URL from environment
base_url = getenv("API_BASE_URL", "https://api.example.com")
client = Client(base_url=base_url)

# Authenticate using credentials from environment variables
email = getenv("API_EMAIL")
password = getenv("API_PASSWORD")
if not email or not password:
    raise RuntimeError("Missing required environment variables")

token = client.authenticate(email=email, password=password)
print(f"Authenticated successfully. Token: {token}")

# List available models
models = client.list_models()
print("\nAvailable models:")
for model in models:
    print(f"- {model.name} (ID: {model.model_id})")

# Submit an inference request
inference = client.create_inference(model_id="model-123", file_path="data.csv")
print(f"\nCreated inference request: {inference.inference_request_id}")

# Check inference status and get results
result = client.get_inference_result(inference.inference_request_id)
if result is None:
    print("Inference is still processing...")
else:
    print("Inference completed. Saving results...")
    with open("result.csv", "wb") as f:
        f.write(result)

# List all inferences
inferences = client.list_inferences()
print("\nAll inference requests:")
for inf in inferences:
    print(f"- ID: {inf.inference_request_id}, Model: {inf.model_id}, Created: {inf.created_at}")
```

Set the following environment variables before running the example:

```bash
export API_BASE_URL="https://your-api-url.com"
export API_EMAIL="your-email@example.com"
export API_PASSWORD="your-password"
```

Replace `model-123` and `data.csv` with your actual model ID and CSV file path.

## Releasing a new version

- Create an API Token on [PyPI](https://pypi.org/).
- Add the API Token to your projects secrets with the name `PYPI_TOKEN` by visiting [this page](https://github.com/fabeider/saas-skd/settings/secrets/actions/new).
- Create a [new release](https://github.com/fabeider/saas-skd/releases/new) on Github.
- Create a new tag in the form `*.*.*`.

For more details, see [here](https://fpgmaas.github.io/cookiecutter-uv/features/cicd/#how-to-trigger-a-release).

---

Repository initiated with [fpgmaas/cookiecutter-uv](https://github.com/fpgmaas/cookiecutter-uv).
