Metadata-Version: 2.4
Name: signify-ai
Version: 0.1.0a2
Summary: Official Python client for the hosted Signify sign-language API
Project-URL: Documentation, https://github.com/zahemen9900/gsl-tests/tree/enhancements/sdks/python
Project-URL: Changelog, https://github.com/zahemen9900/gsl-tests/blob/enhancements/sdks/python/CHANGELOG.md
Project-URL: Issues, https://github.com/zahemen9900/gsl-tests/issues
Project-URL: Source, https://github.com/zahemen9900/gsl-tests
Author: Signify AI
Maintainer-email: David Yeboah <zahemen9900@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: httpx<1,>=0.27
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: hatchling<2,>=1.27; extra == 'dev'
Requires-Dist: mypy>=1.13; extra == 'dev'
Requires-Dist: pip-audit>=2.7; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Requires-Dist: twine>=5.1; extra == 'dev'
Provides-Extra: numpy
Requires-Dist: numpy>=1.26; extra == 'numpy'
Description-Content-Type: text/markdown

# Signify AI Python SDK

Experimental Python client for the hosted Signify Ghanaian Sign Language API.

```bash
pip install --pre signify-ai
export SIGNIFY_API_KEY="your-api-key"
```

Create and revoke scoped keys from the Signify dashboard after accepting the
current Terms and Privacy Notice. A newly created secret is shown once. Store it
in a secret manager or local environment variable; it cannot be retrieved later.

```python
from signify_ai import Signify

with Signify() as client:
    result = client.text_to_sign.generate(text="Good morning")
    print(result.pose_format, result.duration_seconds)
```

Async usage:

```python
from signify_ai import AsyncSignify

async with AsyncSignify() as client:
    result = await client.text_to_sign.generate(text="Welcome")
```

Streaming does not buffer the full motion:

```python
with Signify() as client:
    with client.text_to_sign.stream(text="Good morning") as chunks:
        for chunk in chunks:
            print(chunk.index, chunk.start_frame, chunk.end_frame)
```

Sign-to-text accepts finite frame vectors and explicit metadata:

```python
translation = client.sign_to_text.translate(
    frames=frames,
    fps=30.0,
    pose_format="mediapipe540",
)
```

The constructor argument takes precedence over `SIGNIFY_API_KEY`. Both sync and
async clients support custom `base_url`, timeout, retry count, and `httpx`
transport values for testing. POST retries require an idempotency key; generated
SDK operations create one automatically. Rate-limit responses respect
`Retry-After` and expose `request_id` on typed exceptions.

```python
from signify_ai import RateLimitError, Signify, SignifyError

try:
    result = Signify(timeout=45.0, max_retries=2).text_to_sign.generate(
        text="Good morning",
        idempotency_key="your-stable-request-uuid",
    )
except RateLimitError as exc:
    print(exc.code, exc.request_id, exc.retryable)
except SignifyError as exc:
    print(exc.code, exc.request_id)
```

The service returns `RateLimit-Limit`, `RateLimit-Remaining`, and
`RateLimit-Reset` where applicable, plus `Retry-After` when a request can be
retried. The public alpha has conservative request, daily quota, and concurrent
inference limits because the current hosted worker is CPU-bound.

Core results are immutable Python values. Install `signify-ai[numpy]` and call
`result.to_numpy()` for a `float32` array.

## Versioning and data use

The SDK version, `Signify-API-Version`, hosted model version, and pose-schema
version are independent. This alpha sends API contract version `2026-08-07`.
Capability responses report the effective hosted data-use policy. Public-alpha
payloads may be retained for safety, evaluation, debugging, and model improvement
under the Signify Terms and Privacy Notice. Contracted organization opt-out is
server-enforced; an SDK flag cannot override organization policy.

Raw payload-improvement storage and unrestricted onboarding are disabled for
this release candidate until the legal notices, retention schedule, deletion
workflow, and governed encrypted store are approved. Operational usage metadata
does not include raw prompts, pose arrays, outputs, or API-key secrets. To make
safe idempotent retries possible, the hosted API keeps an encrypted response
replay entry for a bounded period (24 hours by default); this is separate from
usage events and is automatically expired.

This client is alpha software. Compatibility may change before 1.0. Handle
`SignifyError` subclasses and pin versions for production experiments.

## Security

Never commit API keys. Rotate a key immediately if it is exposed. Report security
issues privately to `zahemen9900@gmail.com`; do not open a public exploit issue.

## License boundary

Apache-2.0 covers only this SDK client. Use of the hosted API is governed by the
Signify Terms of Service. This package grants no model license, model weights,
inference implementation, trademark rights, licensed avatar/reconstruction assets,
or proprietary server rights.
