lexigram-multimedia-upscale
Image and video super-resolution for the Lexigram Framework — local reference-server backends (real-esrgan, hat).
Overview
lexigram-multimedia-upscale upscales images 2x or 4x with Real-ESRGAN or HAT reference servers, and registers a VideoUpscaleService for frame-level video upscaling when a VideoProcessor is available in the container.
Full documentation: docs.lexigram.dev
Install
uv add lexigram-multimedia-upscale
# Optional extras
uv add "lexigram-multimedia-upscale[real-esrgan-server]" # Real-ESRGAN server deps
uv add "lexigram-multimedia-upscale[hat-server]" # HAT server deps
Quick Start
from lexigram import Application
from lexigram.di.module import Module, module
from lexigram.multimedia.upscale import UpscaleModule
from lexigram.contracts.multimedia import UpscaleProvider, UpscaleRequest, MediaAsset
@module(imports=[UpscaleModule.configure()])
class AppModule(Module):
pass
async def main() -> None:
async with Application.boot(modules=[AppModule]) as app:
upscale = await app.container.resolve(UpscaleProvider)
asset = MediaAsset(mime_type="image/png", provider="local", bytes_data=b"<png>")
result = await upscale.upscale(UpscaleRequest(asset=asset, scale_factor=4))
if result.is_ok():
upscaled = result.unwrap() # MediaAsset — upscaled image bytes or URI
if __name__ == "__main__":
import asyncio
asyncio.run(main())
Configuration
Zero-config usage: Call
UpscaleModule.configure()with no arguments to use thereal-esrganbackend athttp://localhost:5400.
Option 1 — YAML file
# application.yaml
multimedia:
upscale:
backend: "hat"
default_scale_factor: 2
Option 2 — Profiles + Environment Variables
export LEX_PROFILE=production
export LEX_MULTIMEDIA__UPSCALE__BACKEND=real-esrgan
export LEX_MULTIMEDIA__UPSCALE__DEFAULT_SCALE_FACTOR=4
Option 3 — Python
from lexigram.multimedia.upscale import UpscaleModule
from lexigram.multimedia.upscale.config import UpscaleConfig
UpscaleModule.configure(
config=UpscaleConfig(backend="hat", default_scale_factor=2)
)
Config reference
| Field | Default | Env var | Description |
|---|---|---|---|
backend |
"real-esrgan" |
LEX_MULTIMEDIA__UPSCALE__BACKEND |
real-esrgan, hat |
real_esrgan_base_url |
"http://localhost:5400" |
LEX_MULTIMEDIA__UPSCALE__REAL_ESRGAN_BASE_URL |
Real-ESRGAN server URL |
hat_base_url |
"http://localhost:5401" |
LEX_MULTIMEDIA__UPSCALE__HAT_BASE_URL |
HAT server URL |
default_scale_factor |
4 |
LEX_MULTIMEDIA__UPSCALE__DEFAULT_SCALE_FACTOR |
Default upscale factor (2 or 4) |
timeout |
30.0 |
LEX_MULTIMEDIA__UPSCALE__TIMEOUT |
Request timeout in seconds |
Module Factory Methods
| Method | Description |
|---|---|
UpscaleModule.configure(config) |
Configure with explicit upscale config |
UpscaleModule.stub() |
No-op module for unit testing |
Key Features
- Two backends —
real-esrgan,hatreference servers - Video upscaling —
VideoUpscaleServicefor frame-level video super-resolution (whenVideoProcessoris available) - Reference servers —
lexigram-upscale-real-esrgan-serveandlexigram-upscale-hat-serveconsole scripts run each local model server - Result-based —
upscale() -> Result[MediaAsset, MultimediaError]; errors are domain values, not exceptions
Testing
from lexigram import Application
from lexigram.multimedia.upscale import UpscaleModule
async def test_boot():
async with Application.boot(modules=[UpscaleModule.stub()]) as app:
assert app.container is not None
Key Source Files
| File | What it contains |
|---|---|
src/lexigram/multimedia/upscale/module.py |
UpscaleModule.configure() and .stub() |
src/lexigram/multimedia/upscale/config.py |
UpscaleConfig |
src/lexigram/multimedia/upscale/di/provider.py |
UpscaleGenerationProvider — registers UpscaleProvider, wires task handlers |
src/lexigram/multimedia/upscale/providers/ |
Backend implementations (real_esrgan, hat) |
src/lexigram/multimedia/upscale/servers/ |
Reference-server entry points (lexigram-upscale-*-serve) |
src/lexigram/multimedia/upscale/video_upscale_service.py |
VideoUpscaleService — frame-level video upscaling |
src/lexigram/multimedia/upscale/tasks.py |
Background upscale task handlers |
src/lexigram/multimedia/upscale/exceptions.py |
UpscaleError hierarchy |
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lexigram_multimedia_upscale-0.1.3005-py3-none-any.whl.
File metadata
- Download URL: lexigram_multimedia_upscale-0.1.3005-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.8.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
120f502ed4916fd29485008c1c5bec0e8c8348d4d68c11a0efc57cd73a1cb723
|
|
| MD5 |
a8580769b4a5df15c66fff99d626ffb1
|
|
| BLAKE2b-256 |
84cc6093f777d2e7e9f56693f34adf4e8c8c5b2ba051432b121f1f5505087658
|