Metadata-Version: 2.4
Name: hugpy-video
Version: 0.2.3
Summary: Hugpy video: media library and job bus, ffmpeg, synthetic and studio runners, reservations and studio sessions for video intelligence
Author-email: putkoff <support@hugpy.ai>
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://hugpy.ai
Project-URL: Documentation, https://github.com/hugpy/hugpy/blob/main/py/cinema/hugpy_video/README.md
Project-URL: Repository, https://github.com/hugpy/hugpy
Project-URL: Source, https://github.com/hugpy/hugpy/tree/main/py/cinema/hugpy_video
Project-URL: Issues, https://github.com/hugpy/hugpy/issues
Project-URL: Changelog, https://github.com/hugpy/hugpy/releases
Project-URL: Architecture, https://github.com/hugpy/hugpy/blob/main/PARTITION.md
Keywords: hugpy,llm,self-hosted,video,ffmpeg,video-generation,media-intelligence
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: hugpy-platform
Requires-Dist: hugpy-control
Requires-Dist: hugpy-engine
Requires-Dist: hugpy-media
Requires-Dist: pydantic>=2
Requires-Dist: abstract-essentials
Provides-Extra: render
Requires-Dist: numpy; extra == "render"
Requires-Dist: Pillow; extra == "render"
Requires-Dist: requests; extra == "render"
Provides-Extra: studio
Requires-Dist: torch; extra == "studio"
Requires-Dist: diffusers; extra == "studio"
Requires-Dist: transformers; extra == "studio"
Requires-Dist: numpy; extra == "studio"
Requires-Dist: Pillow; extra == "studio"
Requires-Dist: opencv-python-headless; extra == "studio"
Requires-Dist: imageio; extra == "studio"
Requires-Dist: imageio-ffmpeg; extra == "studio"
Requires-Dist: requests; extra == "studio"
Provides-Extra: identity
Requires-Dist: abstract-identity; extra == "identity"
Requires-Dist: requests; extra == "identity"
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: pytest-timeout; extra == "test"
Dynamic: license-file

# hugpy-video

Execution and artifacts for Hugpy video work, extracted from the monolith's
`abstract_hugpy_dev.video_intel` (+ `managers/video`, `managers/video_gen`,
`comms/studio_assist_log`). Import name `hugpy_video`.

**Status: extracted.** Runtime code lives here; the package imports with the
monolith blocked and with no optional stack (torch/diffusers/ffmpeg bindings)
installed. Allowed ecosystem imports: `hugpy_platform`, `hugpy_control`,
`hugpy_engine`, `hugpy_media`. Never `hugpy_oracle`, `hugpy_fleet`,
`hugpy_server` (see `py/partition.toml`, `PARTITION.md`).

## Layout
- `intel/` — media references + jail (`media_store`), sqlite media job bus
  (`media_bus`) and its control-plane bridge (`job_bridge`), frozen job specs
  and registry (`job_schema`), presets, GPU reservation engine
  (`reservation/`), runners (ffmpeg, diffusers plane, studio, identity relays,
  MLT), the studio spine (`studio/`).
- `chat_video/` — chat-side frame analysis over a `hugpy_media` vision runner.
- `video_gen/` — `StudioVideoRunner` / `VideoGenRequest`: the engine task
  runner for text-to-video / image-to-video.
- `plugin.py` — `hugpy_engine.tasks` entry point (`hugpy_video.plugin:register`);
  import-light, runner resolved lazily.
- `hooks.py` — `PromptCoordinator` protocol (oracle installs its implementation;
  no-op default). `jobs.py` — public bus API incl. `register_job` for
  upper-layer jobs (the oracle's `video_performance`).
- `state.py` — injectable state roots (`HUGPY_VIDEO_STATE_DIR`,
  `HUGPY_MEDIA_JOBS_DB`, `HUGPY_RESERVATIONS_DB`, platform storage roots).
- `intel/plane.py` — the one seam onto the engine's `execute_prompt`.
- `cli.py` — `hugpy-video --help | jobs list | jobs registry | selftest | state`.
- `hugpy-video models audit [--json]` inventories every declared model's
  runner gaps, weight pin and minimum VRAM without loading weights.
- `config.py` — canonical `HUGPY_API_KEY` / `HUGPY_BASE` loader.

Extras: `render` (numpy/Pillow/requests), `studio` (torch/diffusers zoo),
`identity` (abstract-identity client), `test`.

The `identity` extra installs the separate `abstract-identity` distribution.
The central video runner relays mesh and char360 jobs to its service using
`IDENTITY_RENDER_URL` and `IDENTITY_RENDER_TOKEN`; installing the extra alone
does not start a GPU service. Studio model sweeps use
`POST /video/studio/tester`; each attempt records its model, input image,
sampler settings, frame count and negative prompt in the battery log.

## Rules (inherited from char360 / hugpy-agent)
- Heavy imports lazy — must import on a CPU-only box.
- Version single-sourced from pyproject (importlib.metadata; no hardcoded `__version__`).
- Credentials only via `hugpy_video.config.load_config` — canonical names
  `HUGPY_API_KEY` / `HUGPY_BASE`; legacy aliases accepted but recorded in
  `Config.deprecations`.
- Build: `python -m build`; publish = copy dists (console dir needs the sha256
  sidecar; the pypi index computes hashes itself, dir name must be the
  normalized dashed name `hugpy-video`).
