From 56bdbc77a7e14c45df6517a6677e8e9c198b22ea Mon Sep 17 00:00:00 2001 From: Adir Amsalem Date: Wed, 22 Jul 2026 13:39:14 +0300 Subject: [PATCH] feat(models): add lucy-vton-3.5 (realtime + batch) --- decart/models.py | 17 +++++++++++++++++ playground/playground.py | 1 + tests/test_models.py | 14 ++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/decart/models.py b/decart/models.py index b4de4df..3dbe34e 100644 --- a/decart/models.py +++ b/decart/models.py @@ -10,6 +10,7 @@ "lucy-2.5", "lucy-vton-2", "lucy-vton-3", + "lucy-vton-3.5", "lucy-restyle-2", # Latest aliases (server-side resolution) "lucy-latest", @@ -25,6 +26,7 @@ "lucy-2.5", "lucy-vton-2", "lucy-vton-3", + "lucy-vton-3.5", "lucy-restyle-2", # Latest aliases (server-side resolution) "lucy-latest", @@ -226,6 +228,13 @@ class ImageToImageInput(DecartBaseModel): width=1088, height=624, ), + "lucy-vton-3.5": ModelDefinition( + name="lucy-vton-3.5", + url_path="/v1/stream", + fps=30, + width=1088, + height=624, + ), "lucy-2.1-vton-2": ModelDefinition( name="lucy-2.1-vton-2", url_path="/v1/stream", @@ -283,6 +292,14 @@ class ImageToImageInput(DecartBaseModel): height=624, input_schema=VideoEdit2Input, ), + "lucy-vton-3.5": ModelDefinition( + name="lucy-vton-3.5", + url_path="/v1/jobs/lucy-vton-3.5", + fps=20, + width=1088, + height=624, + input_schema=VideoEdit2Input, + ), "lucy-2.1-vton-2": ModelDefinition( name="lucy-2.1-vton-2", url_path="/v1/jobs/lucy-2.1-vton-2", diff --git a/playground/playground.py b/playground/playground.py index 9cb12c9..f8421c8 100644 --- a/playground/playground.py +++ b/playground/playground.py @@ -60,6 +60,7 @@ def _check_deps() -> None: "lucy-2.1", "lucy-2.5", "lucy-vton-3", + "lucy-vton-3.5", "lucy-restyle-2", ] diff --git a/tests/test_models.py b/tests/test_models.py index c279678..228a6eb 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -39,6 +39,13 @@ def test_canonical_realtime_models() -> None: assert model.width == 1088 assert model.height == 624 + model = models.realtime("lucy-vton-3.5") + assert model.name == "lucy-vton-3.5" + assert model.url_path == "/v1/stream" + assert model.fps == 30 + assert model.width == 1088 + assert model.height == 624 + def test_deprecated_realtime_models() -> None: _warned_aliases.clear() @@ -85,6 +92,13 @@ def test_canonical_video_models() -> None: assert model.width == 1088 assert model.height == 624 + model = models.video("lucy-vton-3.5") + assert model.name == "lucy-vton-3.5" + assert model.url_path == "/v1/jobs/lucy-vton-3.5" + assert model.fps == 20 + assert model.width == 1088 + assert model.height == 624 + model = models.video("lucy-restyle-2") assert model.name == "lucy-restyle-2" assert model.url_path == "/v1/jobs/lucy-restyle-2"