Metadata-Version: 2.4
Name: sudhanva
Version: 0.1.0
Summary: Minimal Python client for the public sudhanva.me API.
Author-email: Sudhanva Narayana <nsudhanva@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://sudhanva.me
Project-URL: Documentation, https://sudhanva.me/developers/sdks/
Project-URL: Source, https://github.com/nsudhanva/sudhanva-python
Project-URL: Issues, https://github.com/nsudhanva/sudhanva-python/issues
Project-URL: OpenAPI, https://sudhanva.me/openapi.json
Keywords: sudhanva,api,sdk,agents,machine-learning
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries
Classifier: Typing :: Typed
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# sudhanva for Python

Minimal, dependency-free Python client for the public
[sudhanva.me API](https://sudhanva.me/openapi.json). It retrieves published profile and article
metadata, performs bounded batch reads, searches the published site, and creates or polls temporary
profile-insight jobs.

The API is public and requires no credentials. Do not send private data.

## Install

```bash
python -m pip install sudhanva
```

## Use

```python
from sudhanva import Client

client = Client()

profile = client.profile()
posts = client.posts(limit=5, tag="kubernetes")
article = client.post("making-your-site-agent-friendly")

job = client.create_profile_insight(
    audience="hiring-manager",
    focus=["production-ml", "inference"],
    idempotency_key="my-workflow-2026-08-23",
)
result = client.wait_for_profile_insight(job["job_id"])
```

All methods return decoded JSON dictionaries. Non-success responses raise `sudhanva.APIError` with
`status`, `code`, `message`, and the decoded response body.

## API coverage

- `profile()`
- `posts()` and `post()`
- `batch()`
- `create_profile_insight()`, `profile_insight()`, and `wait_for_profile_insight()`
- `ask()` for NLWeb conversational search

The client follows the stable `/api/v1` contract. See the
[developer documentation](https://sudhanva.me/developers/sdks/) and
[versioning policy](https://sudhanva.me/developers/versioning/).

## Development

```bash
python -m pip install -e .
python -m unittest discover -s tests -v
python -m build
```

The test suite uses an injected transport and never calls production.

## License

MIT

