tongflow 0.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tongflow-0.0.1/PKG-INFO +46 -0
- tongflow-0.0.1/README.md +28 -0
- tongflow-0.0.1/pyproject.toml +27 -0
- tongflow-0.0.1/setup.cfg +4 -0
- tongflow-0.0.1/tongflow/__init__.py +3 -0
- tongflow-0.0.1/tongflow/__main__.py +6 -0
- tongflow-0.0.1/tongflow/abi.py +33 -0
- tongflow-0.0.1/tongflow/gen_models.py +109 -0
- tongflow-0.0.1/tongflow/gen_node_slots.py +86 -0
- tongflow-0.0.1/tongflow/models/__init__.py +1 -0
- tongflow-0.0.1/tongflow/models/arrange_group.py +13 -0
- tongflow-0.0.1/tongflow/models/asset.py +9 -0
- tongflow-0.0.1/tongflow/models/audio_image_gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/combine_text.py +13 -0
- tongflow-0.0.1/tongflow/models/concat_videos.py +13 -0
- tongflow-0.0.1/tongflow/models/drop_video.py +13 -0
- tongflow-0.0.1/tongflow/models/extract_audio.py +13 -0
- tongflow-0.0.1/tongflow/models/gen_music.py +13 -0
- tongflow-0.0.1/tongflow/models/gen_speech.py +13 -0
- tongflow-0.0.1/tongflow/models/gen_text.py +13 -0
- tongflow-0.0.1/tongflow/models/gen_text_gemini.py +13 -0
- tongflow-0.0.1/tongflow/models/gen_text_openai.py +13 -0
- tongflow-0.0.1/tongflow/models/gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/get_first_frame.py +13 -0
- tongflow-0.0.1/tongflow/models/get_last_frame.py +13 -0
- tongflow-0.0.1/tongflow/models/image_describe.py +13 -0
- tongflow-0.0.1/tongflow/models/image_edit.py +13 -0
- tongflow-0.0.1/tongflow/models/image_fusion.py +13 -0
- tongflow-0.0.1/tongflow/models/image_gen.py +13 -0
- tongflow-0.0.1/tongflow/models/image_gen_model.py +13 -0
- tongflow-0.0.1/tongflow/models/image_gen_text.py +13 -0
- tongflow-0.0.1/tongflow/models/image_gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/image_image_gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/image_upscale.py +13 -0
- tongflow-0.0.1/tongflow/models/link.py +13 -0
- tongflow-0.0.1/tongflow/models/merge_video_audio.py +13 -0
- tongflow-0.0.1/tongflow/models/parse_document.py +13 -0
- tongflow-0.0.1/tongflow/models/speech_image_video_gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/speech_text_gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/speech_video_gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/split_text.py +13 -0
- tongflow-0.0.1/tongflow/models/split_video.py +13 -0
- tongflow-0.0.1/tongflow/models/text_gen_speech_clone.py +13 -0
- tongflow-0.0.1/tongflow/models/text_gen_speech_emotion.py +13 -0
- tongflow-0.0.1/tongflow/models/text_gen_speech_instruct.py +13 -0
- tongflow-0.0.1/tongflow/models/text_gen_speech_style.py +13 -0
- tongflow-0.0.1/tongflow/models/text_gen_video.py +13 -0
- tongflow-0.0.1/tongflow/models/transcribe.py +17 -0
- tongflow-0.0.1/tongflow/models/transcribe_timestamp.py +17 -0
- tongflow-0.0.1/tongflow/models/video_describe.py +13 -0
- tongflow-0.0.1/tongflow/models/video_gen_text.py +13 -0
- tongflow-0.0.1/tongflow/models/video_image_gen_video_mix.py +13 -0
- tongflow-0.0.1/tongflow/models/video_image_gen_video_move.py +13 -0
- tongflow-0.0.1/tongflow/models/video_image_move_animal.py +13 -0
- tongflow-0.0.1/tongflow/models/video_upscale.py +13 -0
- tongflow-0.0.1/tongflow/models/wan_animate_mix.py +13 -0
- tongflow-0.0.1/tongflow/node_slots.py +115 -0
- tongflow-0.0.1/tongflow/parse_deploy.py +288 -0
- tongflow-0.0.1/tongflow/protocol.py +29 -0
- tongflow-0.0.1/tongflow/scan.py +335 -0
- tongflow-0.0.1/tongflow/slots.py +17 -0
- tongflow-0.0.1/tongflow.egg-info/PKG-INFO +46 -0
- tongflow-0.0.1/tongflow.egg-info/SOURCES.txt +63 -0
- tongflow-0.0.1/tongflow.egg-info/dependency_links.txt +1 -0
- tongflow-0.0.1/tongflow.egg-info/top_level.txt +1 -0
tongflow-0.0.1/PKG-INFO
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: tongflow
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Tongflow / Openflow plugin package (node contracts, deploy scan, ABI helpers)
|
|
5
|
+
Author: Tongflow contributors
|
|
6
|
+
License-Expression: AGPL-3.0-or-later
|
|
7
|
+
Keywords: tongflow,openflow,modal,plugin
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Typing :: Typed
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
|
|
19
|
+
# tongflow (PyPI)
|
|
20
|
+
|
|
21
|
+
`pip install tongflow` installs the **Python import name** `tongflow` (plugin contracts, `deploy.py` scan, node slot metadata).
|
|
22
|
+
|
|
23
|
+
## Install
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
pip install tongflow
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Use
|
|
30
|
+
|
|
31
|
+
```python
|
|
32
|
+
from tongflow.slots import node_slot
|
|
33
|
+
from tongflow.node_slots import NodeSlots
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Build and publish (maintainers)
|
|
37
|
+
|
|
38
|
+
From this directory:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
python -m pip install --upgrade build twine
|
|
42
|
+
python -m build
|
|
43
|
+
python -m twine upload dist/*
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Use [TestPyPI](https://test.pypi.org) first if you prefer: `twine upload --repository testpypi dist/*`
|
tongflow-0.0.1/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# tongflow (PyPI)
|
|
2
|
+
|
|
3
|
+
`pip install tongflow` installs the **Python import name** `tongflow` (plugin contracts, `deploy.py` scan, node slot metadata).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install tongflow
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Use
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
from tongflow.slots import node_slot
|
|
15
|
+
from tongflow.node_slots import NodeSlots
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Build and publish (maintainers)
|
|
19
|
+
|
|
20
|
+
From this directory:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
python -m pip install --upgrade build twine
|
|
24
|
+
python -m build
|
|
25
|
+
python -m twine upload dist/*
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Use [TestPyPI](https://test.pypi.org) first if you prefer: `twine upload --repository testpypi dist/*`
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "tongflow"
|
|
7
|
+
version = "0.0.1"
|
|
8
|
+
description = "Tongflow / Openflow plugin package (node contracts, deploy scan, ABI helpers)"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = "AGPL-3.0-or-later"
|
|
12
|
+
authors = [{ name = "Tongflow contributors" }]
|
|
13
|
+
keywords = ["tongflow", "openflow", "modal", "plugin"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3.10",
|
|
19
|
+
"Programming Language :: Python :: 3.11",
|
|
20
|
+
"Programming Language :: Python :: 3.12",
|
|
21
|
+
"Programming Language :: Python :: 3.13",
|
|
22
|
+
"Typing :: Typed",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[tool.setuptools.packages.find]
|
|
26
|
+
where = ["."]
|
|
27
|
+
include = ["tongflow*"]
|
tongflow-0.0.1/setup.cfg
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Any, FrozenSet
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass(frozen=True)
|
|
10
|
+
class Abi:
|
|
11
|
+
version: int
|
|
12
|
+
node_slots: FrozenSet[str]
|
|
13
|
+
path: Path
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def load_abi(path: Path) -> Abi:
|
|
17
|
+
raw: dict[str, Any] = json.loads(path.read_text(encoding="utf-8"))
|
|
18
|
+
v = int(raw.get("version", 0))
|
|
19
|
+
if v != 1:
|
|
20
|
+
raise ValueError(f"Unsupported ABI version {v} in {path}")
|
|
21
|
+
nodes = raw.get("nodes")
|
|
22
|
+
if not isinstance(nodes, list) or not nodes:
|
|
23
|
+
raise ValueError("ABI 'nodes' must be a non-empty list")
|
|
24
|
+
slots: set[str] = set()
|
|
25
|
+
for n in nodes:
|
|
26
|
+
if not isinstance(n, dict):
|
|
27
|
+
continue
|
|
28
|
+
s = n.get("nodeSlot")
|
|
29
|
+
if isinstance(s, str) and s:
|
|
30
|
+
slots.add(s)
|
|
31
|
+
if not slots:
|
|
32
|
+
raise ValueError("No nodeSlot entries in ABI")
|
|
33
|
+
return Abi(version=1, node_slots=frozenset(slots), path=path)
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import json
|
|
5
|
+
import re
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def slot_to_ident(slot: str) -> str:
|
|
11
|
+
s = slot.upper()
|
|
12
|
+
s = re.sub(r"[^A-Z0-9]+", "_", s).strip("_")
|
|
13
|
+
if not s:
|
|
14
|
+
return "UNKNOWN"
|
|
15
|
+
if s[0].isdigit():
|
|
16
|
+
s = f"S_{s}"
|
|
17
|
+
return s
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def slot_to_module(slot: str) -> str:
|
|
21
|
+
# python module name
|
|
22
|
+
s = slot.lower()
|
|
23
|
+
s = re.sub(r"[^a-z0-9]+", "_", s).strip("_")
|
|
24
|
+
if not s:
|
|
25
|
+
return "unknown"
|
|
26
|
+
if s[0].isdigit():
|
|
27
|
+
s = f"s_{s}"
|
|
28
|
+
return s
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def read_abi_nodes(abi_path: Path) -> list[dict[str, Any]]:
|
|
32
|
+
raw: dict[str, Any] = json.loads(abi_path.read_text(encoding="utf-8"))
|
|
33
|
+
nodes = raw.get("nodes")
|
|
34
|
+
if not isinstance(nodes, list):
|
|
35
|
+
raise ValueError("ABI missing nodes[]")
|
|
36
|
+
out: list[dict[str, Any]] = []
|
|
37
|
+
for n in nodes:
|
|
38
|
+
if isinstance(n, dict) and isinstance(n.get("nodeSlot"), str):
|
|
39
|
+
out.append(n)
|
|
40
|
+
return out
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def write_models(out_dir: Path, nodes: list[dict[str, Any]]) -> None:
|
|
44
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
45
|
+
(out_dir / "__init__.py").write_text(
|
|
46
|
+
"\"\"\"Generated models from tongflow ABI.\"\"\"\n",
|
|
47
|
+
encoding="utf-8",
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
asset_py = (
|
|
51
|
+
"from __future__ import annotations\n\n"
|
|
52
|
+
"from typing import TypedDict\n\n\n"
|
|
53
|
+
"class Asset(TypedDict, total=False):\n"
|
|
54
|
+
" bytesBase64: str\n"
|
|
55
|
+
" filename: str\n"
|
|
56
|
+
" mime: str\n"
|
|
57
|
+
)
|
|
58
|
+
(out_dir / "asset.py").write_text(asset_py, encoding="utf-8")
|
|
59
|
+
|
|
60
|
+
for n in nodes:
|
|
61
|
+
slot = str(n["nodeSlot"])
|
|
62
|
+
mod = slot_to_module(slot)
|
|
63
|
+
cls = slot_to_ident(slot).title().replace("_", "")
|
|
64
|
+
input_name = f"{cls}Input"
|
|
65
|
+
output_name = f"{cls}Output"
|
|
66
|
+
|
|
67
|
+
# Only transcribe is strongly modeled for now.
|
|
68
|
+
if slot in ("transcribe", "transcribe_timestamp"):
|
|
69
|
+
text = (
|
|
70
|
+
"from __future__ import annotations\n\n"
|
|
71
|
+
"from typing import TypedDict\n"
|
|
72
|
+
"from .asset import Asset\n\n\n"
|
|
73
|
+
f"class {input_name}(TypedDict, total=False):\n"
|
|
74
|
+
" audio: Asset\n"
|
|
75
|
+
" context: str\n"
|
|
76
|
+
" language: str\n"
|
|
77
|
+
" max_new_tokens: float\n\n\n"
|
|
78
|
+
f"class {output_name}(TypedDict, total=False):\n"
|
|
79
|
+
" text: str\n"
|
|
80
|
+
" language: str\n"
|
|
81
|
+
" time_stamps: list[dict[str, float | str]]\n"
|
|
82
|
+
)
|
|
83
|
+
else:
|
|
84
|
+
text = (
|
|
85
|
+
"from __future__ import annotations\n\n"
|
|
86
|
+
"from typing import Any, TypedDict\n\n\n"
|
|
87
|
+
f"class {input_name}(TypedDict, total=False):\n"
|
|
88
|
+
" \"\"\"Fallback generic input. Tighten via ABI later.\"\"\"\n"
|
|
89
|
+
" _data: dict[str, Any]\n\n\n"
|
|
90
|
+
f"class {output_name}(TypedDict, total=False):\n"
|
|
91
|
+
" \"\"\"Fallback generic output. Tighten via ABI later.\"\"\"\n"
|
|
92
|
+
" _data: dict[str, Any]\n"
|
|
93
|
+
)
|
|
94
|
+
(out_dir / f"{mod}.py").write_text(text, encoding="utf-8")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def main() -> int:
|
|
98
|
+
ap = argparse.ArgumentParser()
|
|
99
|
+
ap.add_argument("--abi", type=Path, required=True)
|
|
100
|
+
ap.add_argument("--out-dir", type=Path, required=True)
|
|
101
|
+
ns = ap.parse_args()
|
|
102
|
+
nodes = read_abi_nodes(ns.abi)
|
|
103
|
+
write_models(ns.out_dir, nodes)
|
|
104
|
+
return 0
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
if __name__ == "__main__":
|
|
108
|
+
raise SystemExit(main())
|
|
109
|
+
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import json
|
|
5
|
+
import re
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def slot_to_ident(slot: str) -> str:
|
|
11
|
+
s = slot.upper()
|
|
12
|
+
s = re.sub(r"[^A-Z0-9]+", "_", s).strip("_")
|
|
13
|
+
if not s:
|
|
14
|
+
return "UNKNOWN"
|
|
15
|
+
if s[0].isdigit():
|
|
16
|
+
s = f"S_{s}"
|
|
17
|
+
return s
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def load_slots(abi_path: Path) -> list[str]:
|
|
21
|
+
raw: dict[str, Any] = json.loads(abi_path.read_text(encoding="utf-8"))
|
|
22
|
+
nodes = raw.get("nodes")
|
|
23
|
+
if not isinstance(nodes, list):
|
|
24
|
+
raise ValueError("ABI missing nodes[]")
|
|
25
|
+
out: list[str] = []
|
|
26
|
+
seen: set[str] = set()
|
|
27
|
+
for n in nodes:
|
|
28
|
+
if not isinstance(n, dict):
|
|
29
|
+
continue
|
|
30
|
+
s = n.get("nodeSlot")
|
|
31
|
+
if isinstance(s, str) and s and s not in seen:
|
|
32
|
+
seen.add(s)
|
|
33
|
+
out.append(s)
|
|
34
|
+
return out
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def generate_node_slots_py(slots: list[str]) -> str:
|
|
38
|
+
lines: list[str] = []
|
|
39
|
+
lines.append('"""Generated from config/tongflow.abi.json. DO NOT EDIT."""')
|
|
40
|
+
lines.append("")
|
|
41
|
+
lines.append("from __future__ import annotations")
|
|
42
|
+
lines.append("")
|
|
43
|
+
lines.append("import re")
|
|
44
|
+
lines.append("from typing import Final")
|
|
45
|
+
lines.append("")
|
|
46
|
+
lines.append("")
|
|
47
|
+
lines.append("def _slot_to_ident(slot: str) -> str:")
|
|
48
|
+
lines.append(" s = slot.upper()")
|
|
49
|
+
lines.append(" s = re.sub(r\"[^A-Z0-9]+\", \"_\", s).strip(\"_\")")
|
|
50
|
+
lines.append(" if not s:")
|
|
51
|
+
lines.append(" return \"UNKNOWN\"")
|
|
52
|
+
lines.append(" if s[0].isdigit():")
|
|
53
|
+
lines.append(" s = f\"S_{s}\"")
|
|
54
|
+
lines.append(" return s")
|
|
55
|
+
lines.append("")
|
|
56
|
+
lines.append("")
|
|
57
|
+
lines.append("class NodeSlots:")
|
|
58
|
+
lines.append(" \"\"\"ABI nodeSlot constants. Use these in @node_slot(...)\"\"\"")
|
|
59
|
+
for slot in slots:
|
|
60
|
+
ident = slot_to_ident(slot)
|
|
61
|
+
lines.append(f" {ident}: Final[str] = {slot!r}")
|
|
62
|
+
lines.append("")
|
|
63
|
+
lines.append("")
|
|
64
|
+
lines.append("ALL_NODE_SLOTS: Final[tuple[str, ...]] = (")
|
|
65
|
+
for slot in slots:
|
|
66
|
+
lines.append(f" {slot!r},")
|
|
67
|
+
lines.append(")")
|
|
68
|
+
lines.append("")
|
|
69
|
+
return "\n".join(lines) + "\n"
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def main() -> int:
|
|
73
|
+
ap = argparse.ArgumentParser()
|
|
74
|
+
ap.add_argument("--abi", type=Path, required=True)
|
|
75
|
+
ap.add_argument("--out", type=Path, required=True)
|
|
76
|
+
ns = ap.parse_args()
|
|
77
|
+
|
|
78
|
+
slots = load_slots(ns.abi)
|
|
79
|
+
text = generate_node_slots_py(slots)
|
|
80
|
+
ns.out.write_text(text, encoding="utf-8")
|
|
81
|
+
return 0
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
if __name__ == "__main__":
|
|
85
|
+
raise SystemExit(main())
|
|
86
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Generated models from tongflow ABI."""
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ArrangeGroupInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ArrangeGroupOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class AudioImageGenVideoInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AudioImageGenVideoOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class CombineTextInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CombineTextOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ConcatVideosInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ConcatVideosOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DropVideoInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DropVideoOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ExtractAudioInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ExtractAudioOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GenMusicInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GenMusicOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GenSpeechInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GenSpeechOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GenTextInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GenTextOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GenTextGeminiInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GenTextGeminiOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GenTextOpenaiInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GenTextOpenaiOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GenVideoInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GenVideoOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GetFirstFrameInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GetFirstFrameOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GetLastFrameInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class GetLastFrameOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageDescribeInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ImageDescribeOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageEditInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ImageEditOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageFusionInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ImageFusionOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageGenInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ImageGenOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageGenModelInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ImageGenModelOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageGenTextInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ImageGenTextOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any, TypedDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImageGenVideoInput(TypedDict, total=False):
|
|
7
|
+
"""Fallback generic input. Tighten via ABI later."""
|
|
8
|
+
_data: dict[str, Any]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ImageGenVideoOutput(TypedDict, total=False):
|
|
12
|
+
"""Fallback generic output. Tighten via ABI later."""
|
|
13
|
+
_data: dict[str, Any]
|