Metadata-Version: 2.1
Name: junyul-kr
Version: 1.2.2
Summary: Junyul — Korea AI Framework Act compliance SDK for Python. 3-line integration for automatic disclosure, watermarking, compute tracking, and audit-ready events.
Home-page: https://junyul.com
License: MIT
Author: Junyul Team
Author-email: support@junyul.com
Requires-Python: >=3.10,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT 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: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Provides-Extra: all
Provides-Extra: audio
Provides-Extra: django
Provides-Extra: fastapi
Provides-Extra: flask
Provides-Extra: image
Provides-Extra: pdf
Provides-Extra: pytorch
Requires-Dist: django (>=5.1.0,<6.0.0) ; extra == "django" or extra == "all"
Requires-Dist: fastapi (>=0.136.1,<0.137) ; extra == "fastapi" or extra == "all"
Requires-Dist: flask (>=3.0.0,<4.0.0) ; extra == "flask" or extra == "all"
Requires-Dist: httpx (>=0.28.0,<0.29.0)
Requires-Dist: mutagen (>=1.47.0,<2.0.0) ; extra == "audio" or extra == "all"
Requires-Dist: pillow (>=12.2.0,<13) ; extra == "image" or extra == "all"
Requires-Dist: pydantic (>=2.9.2,<3.0.0)
Requires-Dist: reportlab (>=4.2.5,<5.0.0) ; extra == "pdf" or extra == "all"
Requires-Dist: torch (>=2.8.0,<3) ; (python_version >= "3.10" and python_version < "3.15") and (extra == "pytorch" or extra == "all")
Requires-Dist: ulid-py (>=1.1.0,<2.0.0)
Project-URL: Documentation, https://docs.junyul.com/sdk/python
Project-URL: Repository, https://github.com/park9j7h/junyul
Description-Content-Type: text/markdown

# junyul-kr

Korea AI Framework Act (AI 기본법) compliance SDK for Python.

## Install

```bash
# Public PyPI release or approved enterprise package channel
pip install junyul-kr
# With extras:
pip install "junyul-kr[image,audio,pytorch]"
```

Until the public PyPI release is opened, enterprise customers install from the
approved private package channel or the signed wheel/sdist supplied through the
Junyul adoption channel.

## Three-line integration

```python
import junyul

junyul.init(api_key="JUN_live_xxx", environment="production")

@junyul.track(asset_id="gpt_chatbot_v1")
def ask_chatbot(user_question: str) -> str:
    return openai_client.chat.completions.create(...)
```

## Features

- `@junyul.track(...)` — automatic event recording (input/output hash, latency, tokens)
- Failed tracked calls are recorded with hashed error metadata and no raw error message.
- `junyul.events.record_objection / record_human_review`
- `junyul.events.record_heartbeat(asset_id=...)` — SDK queue/outbox/circuit telemetry
- `junyul.classify(...)` — live classification API
- `junyul.watermark.image / video / audio / text`
- `junyul.compute.ComputeTracker` — PyTorch/JAX/TF hooks for 10^26 FLOPs tracking
- FastAPI / Flask / Django / Starlette middleware for auto-disclosure injection
- Test mode: `junyul.init(environment="test"); junyul.testing.get_captured_events()`

See the [plan doc](../../plan/junyul_plan2.md#part-5-sdk-상세-설계) for the full design.

