inline-core 1.1.1__py3-none-any.whl
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.
- inline_core/__init__.py +7 -0
- inline_core/components/__init__.py +1 -0
- inline_core/components/conditioning.py +20 -0
- inline_core/components/interfaces.py +91 -0
- inline_core/config.py +33 -0
- inline_core/device/__init__.py +1 -0
- inline_core/device/auto.py +35 -0
- inline_core/device/detect.py +41 -0
- inline_core/device/memory.py +168 -0
- inline_core/device/policy.py +82 -0
- inline_core/device/types.py +31 -0
- inline_core/errors.py +42 -0
- inline_core/graph/__init__.py +1 -0
- inline_core/graph/cache.py +83 -0
- inline_core/graph/descriptor.py +81 -0
- inline_core/graph/executor.py +102 -0
- inline_core/graph/primitives.py +137 -0
- inline_core/graph/registry.py +61 -0
- inline_core/graph/runners.py +72 -0
- inline_core/graph/schema.py +136 -0
- inline_core/graph/topo.py +49 -0
- inline_core/graph/validate.py +56 -0
- inline_core/importer/__init__.py +1 -0
- inline_core/importer/comfy.py +162 -0
- inline_core/media.py +11 -0
- inline_core/models/__init__.py +8 -0
- inline_core/models/catalog.py +98 -0
- inline_core/models/zimage/__init__.py +11 -0
- inline_core/models/zimage/requirements.py +180 -0
- inline_core/models/zimage/runner.py +386 -0
- inline_core/parallel/__init__.py +13 -0
- inline_core/parallel/config.py +50 -0
- inline_core/parallel/group.py +136 -0
- inline_core/parallel/launch.py +44 -0
- inline_core/parallel/protocol.py +53 -0
- inline_core/parallel/registry.py +31 -0
- inline_core/parallel/worker.py +75 -0
- inline_core/runtime/__init__.py +1 -0
- inline_core/runtime/context.py +31 -0
- inline_core/runtime/file_store.py +51 -0
- inline_core/runtime/progress.py +83 -0
- inline_core/runtime/run.py +113 -0
- inline_core/runtime/store.py +18 -0
- inline_core/sampling/__init__.py +1 -0
- inline_core/sampling/batch.py +116 -0
- inline_core/server/__init__.py +1 -0
- inline_core/server/__main__.py +61 -0
- inline_core/server/app.py +327 -0
- inline_core/server/assets.py +47 -0
- inline_core/server/bootstrap.py +21 -0
- inline_core/server/frontend.py +37 -0
- inline_core/server/manager.py +195 -0
- inline_core/server/rpc.py +60 -0
- inline_core/server/run_store.py +155 -0
- inline_core/server/serialize.py +144 -0
- inline_core/studio/__init__.py +7 -0
- inline_core/studio/assets.py +194 -0
- inline_core/studio/config.py +29 -0
- inline_core/studio/fal.py +237 -0
- inline_core/studio/frames.py +552 -0
- inline_core/studio/generation.py +136 -0
- inline_core/studio/graph_build.py +109 -0
- inline_core/studio/handlers.py +236 -0
- inline_core/studio/models.py +173 -0
- inline_core/studio/moodboard.py +400 -0
- inline_core/studio/schema.py +278 -0
- inline_core/studio/store.py +291 -0
- inline_core/studio/timeline/__init__.py +6 -0
- inline_core/studio/timeline/compose.py +130 -0
- inline_core/studio/timeline/ffmpeg.py +76 -0
- inline_core/studio/timeline/render.py +120 -0
- inline_core/studio/timeline/resolve.py +189 -0
- inline_core/takes.py +31 -0
- inline_core-1.1.1.dist-info/METADATA +35 -0
- inline_core-1.1.1.dist-info/RECORD +77 -0
- inline_core-1.1.1.dist-info/WHEEL +4 -0
- inline_core-1.1.1.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"""Resolve a director node's derived timeline from its wired connections — a port of the Studio
|
|
2
|
+
``electron/main/timeline/resolve.ts``. Video inputs use the ``vin-*`` handles, user audio (L2) the
|
|
3
|
+
``ain-*`` handles, in slot order. Each input resolves to a file (a frame's output or an asset), is
|
|
4
|
+
probed for duration, and laid out sequentially. Returns a display model + the ``ResolvedClip`` list
|
|
5
|
+
the compose engine renders. Filmstrip/waveform display extras are omitted (best-effort UI niceties).
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
from .. import assets as ax
|
|
14
|
+
from .. import frames as fr
|
|
15
|
+
from .. import moodboard as mb
|
|
16
|
+
from .compose import ResolvedClip
|
|
17
|
+
from .ffmpeg import ffmpeg_available, probe_media
|
|
18
|
+
|
|
19
|
+
_STILL_SECONDS = 4.0
|
|
20
|
+
_VIDEO_PREFIX = "vin-"
|
|
21
|
+
_AUDIO_PREFIX = "ain-"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _slot_index(handle: Any, prefix: str) -> int | None:
|
|
25
|
+
if not isinstance(handle, str) or not handle.startswith(prefix):
|
|
26
|
+
return None
|
|
27
|
+
try:
|
|
28
|
+
return int(handle[len(prefix):])
|
|
29
|
+
except ValueError:
|
|
30
|
+
return None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _safe_frame_name(conn: Any, frame_id: str) -> str:
|
|
34
|
+
try:
|
|
35
|
+
return fr.get_frame(conn, frame_id)["name"]
|
|
36
|
+
except ValueError:
|
|
37
|
+
return "frame"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _resolve_source_ref(
|
|
41
|
+
conn: Any,
|
|
42
|
+
from_item: dict[str, Any] | None,
|
|
43
|
+
by_id: dict[str, dict[str, Any]],
|
|
44
|
+
connectors: list[dict[str, Any]],
|
|
45
|
+
depth: int = 0,
|
|
46
|
+
) -> dict[str, Any] | None:
|
|
47
|
+
"""A connector source item -> a media ref, walking frame/preview/trim/asset (trim attaches its
|
|
48
|
+
in/out window). ``depth`` guards trim->trim cycles."""
|
|
49
|
+
if from_item is None or depth > 8:
|
|
50
|
+
return None
|
|
51
|
+
kind = from_item["type"]
|
|
52
|
+
if kind == "frame" and from_item.get("frameId"):
|
|
53
|
+
out = fr.resolve_frame_file(conn, from_item["frameId"])
|
|
54
|
+
if out is None:
|
|
55
|
+
return None
|
|
56
|
+
return {
|
|
57
|
+
"sourceId": from_item["frameId"], "frameId": from_item["frameId"],
|
|
58
|
+
"filePath": out["filePath"], "kind": out["kind"],
|
|
59
|
+
"label": _safe_frame_name(conn, from_item["frameId"]), "trimIn": None, "trimOut": None,
|
|
60
|
+
}
|
|
61
|
+
if kind == "preview":
|
|
62
|
+
feed = next((k for k in connectors if k["toItemId"] == from_item["id"]), None)
|
|
63
|
+
feed_frame = by_id.get(feed["fromItemId"]) if feed else None
|
|
64
|
+
if feed_frame and feed_frame["type"] == "frame" and feed_frame.get("frameId"):
|
|
65
|
+
out = fr.resolve_frame_file(conn, feed_frame["frameId"])
|
|
66
|
+
if out is None:
|
|
67
|
+
return None
|
|
68
|
+
return {
|
|
69
|
+
"sourceId": feed_frame["frameId"], "frameId": feed_frame["frameId"],
|
|
70
|
+
"filePath": out["filePath"], "kind": out["kind"],
|
|
71
|
+
"label": _safe_frame_name(conn, feed_frame["frameId"]),
|
|
72
|
+
"trimIn": None, "trimOut": None,
|
|
73
|
+
}
|
|
74
|
+
return None
|
|
75
|
+
if kind == "trim":
|
|
76
|
+
feed = next((k for k in connectors if k["toItemId"] == from_item["id"]), None)
|
|
77
|
+
upstream = by_id.get(feed["fromItemId"]) if feed else None
|
|
78
|
+
ref = _resolve_source_ref(conn, upstream, by_id, connectors, depth + 1)
|
|
79
|
+
if ref is None:
|
|
80
|
+
return None
|
|
81
|
+
trim = (from_item.get("data") or {}).get("trim")
|
|
82
|
+
return {**ref, "trimIn": trim["inPoint"] if trim else None,
|
|
83
|
+
"trimOut": trim["outPoint"] if trim else None}
|
|
84
|
+
if kind == "asset" and from_item.get("assetId"):
|
|
85
|
+
asset = ax.asset_file(conn, from_item["assetId"])
|
|
86
|
+
if asset is None:
|
|
87
|
+
return None
|
|
88
|
+
return {
|
|
89
|
+
"sourceId": from_item["assetId"], "frameId": None, "filePath": asset["filePath"],
|
|
90
|
+
"kind": asset["kind"], "label": asset["name"], "trimIn": None, "trimOut": None,
|
|
91
|
+
}
|
|
92
|
+
return None
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def resolve_timeline(
|
|
96
|
+
conn: Any, folder: Path, owner_item_id: str
|
|
97
|
+
) -> tuple[dict[str, Any], list[ResolvedClip]]:
|
|
98
|
+
director = mb.get_item(conn, owner_item_id)
|
|
99
|
+
data = director.get("data") or {}
|
|
100
|
+
l1_volume = data.get("l1Volume", 1)
|
|
101
|
+
l2_volume = data.get("l2Volume", 1)
|
|
102
|
+
board = mb.list_board(conn)
|
|
103
|
+
by_id = {i["id"]: i for i in board["items"]}
|
|
104
|
+
incoming = [c for c in board["connectors"] if c["toItemId"] == owner_item_id]
|
|
105
|
+
|
|
106
|
+
def pick(prefix: str) -> list[dict[str, Any]]:
|
|
107
|
+
slotted = [
|
|
108
|
+
(c, _slot_index((c.get("data") or {}).get("targetHandle"), prefix)) for c in incoming
|
|
109
|
+
]
|
|
110
|
+
return [c for c, slot in sorted(
|
|
111
|
+
(x for x in slotted if x[1] is not None), key=lambda x: x[1]
|
|
112
|
+
)]
|
|
113
|
+
|
|
114
|
+
display: dict[str, Any] = {"video": [], "l2": [], "l1Volume": l1_volume, "l2Volume": l2_volume}
|
|
115
|
+
clips: list[ResolvedClip] = []
|
|
116
|
+
|
|
117
|
+
def layout(conns: list[dict[str, Any]], track: int, volume: float) -> None:
|
|
118
|
+
cursor = 0.0
|
|
119
|
+
for conn_row in conns:
|
|
120
|
+
ref = _resolve_source_ref(
|
|
121
|
+
conn, by_id.get(conn_row["fromItemId"]), by_id, board["connectors"]
|
|
122
|
+
)
|
|
123
|
+
if ref is None:
|
|
124
|
+
continue
|
|
125
|
+
abs_path = folder / ref["filePath"]
|
|
126
|
+
if not abs_path.is_file():
|
|
127
|
+
continue
|
|
128
|
+
if ref["kind"] == "image":
|
|
129
|
+
probe = {"durationSec": _STILL_SECONDS, "hasAudio": False}
|
|
130
|
+
elif ffmpeg_available():
|
|
131
|
+
probe = probe_media(str(abs_path))
|
|
132
|
+
else:
|
|
133
|
+
probe = {"durationSec": _STILL_SECONDS, "hasAudio": ref["kind"] == "audio"}
|
|
134
|
+
full = probe["durationSec"] if probe["durationSec"] > 0 else _STILL_SECONDS
|
|
135
|
+
|
|
136
|
+
in_point, out_point = 0.0, full
|
|
137
|
+
if ref["kind"] != "image" and (ref["trimIn"] is not None or ref["trimOut"] is not None):
|
|
138
|
+
in_point = min(max(ref["trimIn"] or 0, 0), full)
|
|
139
|
+
raw_out = ref["trimOut"] or 0
|
|
140
|
+
out_point = min(raw_out, full) if raw_out > in_point else full
|
|
141
|
+
duration = max(0.04, out_point - in_point)
|
|
142
|
+
|
|
143
|
+
input_volume = (conn_row.get("data") or {}).get("volume", 1)
|
|
144
|
+
if not isinstance(input_volume, (int, float)):
|
|
145
|
+
input_volume = 1
|
|
146
|
+
input_volume = min(1, max(0, input_volume))
|
|
147
|
+
clip = {
|
|
148
|
+
"key": ref["sourceId"], "connectorId": conn_row["id"], "volume": input_volume,
|
|
149
|
+
"frameId": ref["frameId"], "label": ref["label"], "kind": ref["kind"],
|
|
150
|
+
"startTime": cursor, "duration": duration, "audioPeaks": None,
|
|
151
|
+
"peaksStart": 0, "peaksEnd": 1,
|
|
152
|
+
"thumbnail": ref["filePath"] if ref["kind"] == "image" else None,
|
|
153
|
+
}
|
|
154
|
+
(display["video"] if track == 0 else display["l2"]).append(clip)
|
|
155
|
+
clips.append(ResolvedClip(
|
|
156
|
+
kind=ref["kind"], abs_path=str(abs_path), track=track, start_time=cursor,
|
|
157
|
+
in_point=in_point, out_point=out_point, has_audio=bool(probe["hasAudio"]),
|
|
158
|
+
volume=volume * input_volume,
|
|
159
|
+
))
|
|
160
|
+
cursor += duration
|
|
161
|
+
|
|
162
|
+
layout(pick(_VIDEO_PREFIX), 0, l1_volume)
|
|
163
|
+
layout(pick(_AUDIO_PREFIX), 1, l2_volume)
|
|
164
|
+
return display, clips
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def resolve_trim(conn: Any, folder: Path, item_id: str) -> dict[str, Any] | None:
|
|
168
|
+
board = mb.list_board(conn)
|
|
169
|
+
by_id = {i["id"]: i for i in board["items"]}
|
|
170
|
+
feed = next((k for k in board["connectors"] if k["toItemId"] == item_id), None)
|
|
171
|
+
upstream = by_id.get(feed["fromItemId"]) if feed else None
|
|
172
|
+
ref = _resolve_source_ref(conn, upstream, by_id, board["connectors"])
|
|
173
|
+
if ref is None:
|
|
174
|
+
return None
|
|
175
|
+
abs_path = folder / ref["filePath"]
|
|
176
|
+
if not abs_path.is_file():
|
|
177
|
+
return None
|
|
178
|
+
if ref["kind"] == "image":
|
|
179
|
+
duration = _STILL_SECONDS
|
|
180
|
+
elif ffmpeg_available():
|
|
181
|
+
probe = probe_media(str(abs_path))
|
|
182
|
+
duration = probe["durationSec"] if probe["durationSec"] > 0 else 0.0
|
|
183
|
+
else:
|
|
184
|
+
duration = 0.0
|
|
185
|
+
return {
|
|
186
|
+
"key": ref["sourceId"], "kind": ref["kind"], "label": ref["label"],
|
|
187
|
+
"durationSec": duration, "mediaPath": ref["filePath"],
|
|
188
|
+
"thumbnail": ref["filePath"] if ref["kind"] == "image" else None, "audioPeaks": None,
|
|
189
|
+
}
|
inline_core/takes.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""Immutable outputs (takes) and input references (asset refs). See docs/contract.md."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass, field
|
|
6
|
+
from typing import Any, Literal
|
|
7
|
+
|
|
8
|
+
from .media import MediaKind
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass(frozen=True)
|
|
12
|
+
class AssetRef:
|
|
13
|
+
"""Input bytes: a content-addressed upload (`asset`) or a local file Core can read (`path`)."""
|
|
14
|
+
|
|
15
|
+
ref: Literal["asset", "path"]
|
|
16
|
+
id: str | None = None
|
|
17
|
+
path: str | None = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass(frozen=True)
|
|
21
|
+
class Take:
|
|
22
|
+
"""One immutable render produced by a node."""
|
|
23
|
+
|
|
24
|
+
id: str
|
|
25
|
+
run_id: str
|
|
26
|
+
node_id: str
|
|
27
|
+
kind: MediaKind
|
|
28
|
+
uri: str
|
|
29
|
+
hash: str
|
|
30
|
+
params: dict[str, Any] = field(default_factory=dict)
|
|
31
|
+
created_at: int = 0
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: inline-core
|
|
3
|
+
Version: 1.1.1
|
|
4
|
+
Summary: The generation engine behind Inline.
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Requires-Dist: numpy>=1.26
|
|
7
|
+
Requires-Dist: psutil>=5.9
|
|
8
|
+
Provides-Extra: dev
|
|
9
|
+
Requires-Dist: fastapi>=0.110; extra == 'dev'
|
|
10
|
+
Requires-Dist: httpx>=0.27; extra == 'dev'
|
|
11
|
+
Requires-Dist: imageio-ffmpeg>=0.4; extra == 'dev'
|
|
12
|
+
Requires-Dist: pyright>=1.1; extra == 'dev'
|
|
13
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
14
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
15
|
+
Requires-Dist: uvicorn[standard]>=0.29; extra == 'dev'
|
|
16
|
+
Provides-Extra: parallel
|
|
17
|
+
Requires-Dist: accelerate>=0.30; extra == 'parallel'
|
|
18
|
+
Requires-Dist: diffusers>=0.36; extra == 'parallel'
|
|
19
|
+
Requires-Dist: huggingface-hub>=0.23; extra == 'parallel'
|
|
20
|
+
Requires-Dist: nvidia-ml-py>=12; extra == 'parallel'
|
|
21
|
+
Requires-Dist: safetensors>=0.4; extra == 'parallel'
|
|
22
|
+
Requires-Dist: torch>=2.2; extra == 'parallel'
|
|
23
|
+
Requires-Dist: transformers>=4.44; extra == 'parallel'
|
|
24
|
+
Requires-Dist: xfuser>=0.4; extra == 'parallel'
|
|
25
|
+
Provides-Extra: server
|
|
26
|
+
Requires-Dist: fastapi>=0.110; extra == 'server'
|
|
27
|
+
Requires-Dist: imageio-ffmpeg>=0.4; extra == 'server'
|
|
28
|
+
Requires-Dist: uvicorn[standard]>=0.29; extra == 'server'
|
|
29
|
+
Provides-Extra: zimage
|
|
30
|
+
Requires-Dist: accelerate>=0.30; extra == 'zimage'
|
|
31
|
+
Requires-Dist: diffusers>=0.36; extra == 'zimage'
|
|
32
|
+
Requires-Dist: huggingface-hub>=0.23; extra == 'zimage'
|
|
33
|
+
Requires-Dist: safetensors>=0.4; extra == 'zimage'
|
|
34
|
+
Requires-Dist: torch>=2.2; extra == 'zimage'
|
|
35
|
+
Requires-Dist: transformers>=4.44; extra == 'zimage'
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
inline_core/__init__.py,sha256=jR3cTiYWWi9nTCtnpQ6hYHLQK2-l1X7Gr3Eq-XgwHsU,212
|
|
2
|
+
inline_core/config.py,sha256=_X0MG579jnGaeEGHKkrl7VrYIpsj8AdX5BblRo9SepY,1089
|
|
3
|
+
inline_core/errors.py,sha256=nl5Dj7p6KzWaMHf3qVerELCcLZQLg_Tfmg3B8nFqfSA,1143
|
|
4
|
+
inline_core/media.py,sha256=UQc0MsqLLJXZApEaxNo_2CFKtjb8cuFgTuLWRjHeI84,204
|
|
5
|
+
inline_core/takes.py,sha256=g4iy3ZcYZboyjuuXUukBdV6FphUrHPOmtKKe2RghgYc,723
|
|
6
|
+
inline_core/components/__init__.py,sha256=YKs9TmU716LV_7SY96TpLABsErs_s8EtAQaShp9-D6w,89
|
|
7
|
+
inline_core/components/conditioning.py,sha256=YyonAy9nS5DwTI4lb8EjU3anmUKDnPLXqzNDu33DrW0,500
|
|
8
|
+
inline_core/components/interfaces.py,sha256=-iHrg8od23VYUIjOyNC-QeOAoKpJ9IRdq9V1qMBuKr4,2331
|
|
9
|
+
inline_core/device/__init__.py,sha256=vD1zRGSDXPQIikMkf9X5OxOtMs9v5E5kdQYphVznv2s,94
|
|
10
|
+
inline_core/device/auto.py,sha256=Ozo3YKxX4Wfztv8kL5zm_iLzLAqQfbBcIsp5G7-xCsY,1117
|
|
11
|
+
inline_core/device/detect.py,sha256=P__jBeE4rb-kajekih11QP-li0n_j4uUv1ZP2kzus_0,1353
|
|
12
|
+
inline_core/device/memory.py,sha256=Lw-2p14wcNqHJco4zxqvffqVMESS7GnE9hfkxLSarL0,6686
|
|
13
|
+
inline_core/device/policy.py,sha256=g13xaSvyORKdKPckWxDegisTCvoT3gVNImePvSQoVDY,2258
|
|
14
|
+
inline_core/device/types.py,sha256=j6fc_yL4VDS-djheRXAxxkbY475bjYv4kjLc2_IRdi4,620
|
|
15
|
+
inline_core/graph/__init__.py,sha256=Zf0450y4qt0e9uVIwRIORIsC1FPHNIX_rSdkYck7qlU,99
|
|
16
|
+
inline_core/graph/cache.py,sha256=2Ps1ijelcUDrvGlyuGI6CGHMpdQcq74iBbMZtQ4uiHQ,2490
|
|
17
|
+
inline_core/graph/descriptor.py,sha256=MY6i_IBX1LSoTSBawagMZl6511vBwGgdMpWZz731JZ0,2259
|
|
18
|
+
inline_core/graph/executor.py,sha256=aqb522pd5_ldh2Aw5IYNbpp-dczZ3GeuUbKCq-Bxxo0,4371
|
|
19
|
+
inline_core/graph/primitives.py,sha256=7e_42NHatGAx-LkDqhRjUBT58fXi7KavFv4IJoiSDKE,4600
|
|
20
|
+
inline_core/graph/registry.py,sha256=9_hzEY_OvUWOUqi3o1naelfgF7uGWxmFbPXQF572nG8,2478
|
|
21
|
+
inline_core/graph/runners.py,sha256=irvdsYbBuWFnkjbiJPV0eYCXw_iH4Q3j9bwgMc7on3E,2140
|
|
22
|
+
inline_core/graph/schema.py,sha256=bM-gJpjtYF55zb7PFRujHv70UKsUBk6nTEAsoGInxOA,4520
|
|
23
|
+
inline_core/graph/topo.py,sha256=pzWOqfNFlcrg1CVcLzG0tT9jZl6qVdJYUWNbbCpfaMM,1468
|
|
24
|
+
inline_core/graph/validate.py,sha256=0SNXyH8Ph4ldBUzIYu4881PbziOCjDaEbZPNz3vbmQ8,2430
|
|
25
|
+
inline_core/importer/__init__.py,sha256=Y9ADQwwFq8GWeLTWdkUBgntA6vkTXOXVYFNHaXHr8Xw,98
|
|
26
|
+
inline_core/importer/comfy.py,sha256=FcGElrisCfNmeF5l3QSXp6qfkU1Rmb6rn-xVxwoOqAU,6299
|
|
27
|
+
inline_core/models/__init__.py,sha256=UtYYRKzAxZ-C8u-MuAfmwSrBPKyGSrbS2C7mcMSFgjA,389
|
|
28
|
+
inline_core/models/catalog.py,sha256=HJTFjq4ulfV3qOvoWsOEjshB-CHfe_v0neBXogth-C8,3864
|
|
29
|
+
inline_core/models/zimage/__init__.py,sha256=ZifzO8ZMCanplQEJLmUwfBAvr_mJHW3bqApsLPiPXjU,388
|
|
30
|
+
inline_core/models/zimage/requirements.py,sha256=jxQENhqOQRPcCOK5AoHccy4djOEhR-faQeh-xTHUTSQ,7230
|
|
31
|
+
inline_core/models/zimage/runner.py,sha256=UOpiKhxzdhMZYK_E1E1v4snlFEKCR0DS7t02EltTsug,15834
|
|
32
|
+
inline_core/parallel/__init__.py,sha256=nk6pclbayqbQfRMS64ww1_V0IsGNndP3A0GmzwH_iZI,550
|
|
33
|
+
inline_core/parallel/config.py,sha256=Cd73yghskxAJrmR-qo3mB2lsAaqwwumd6BMuo_ScJok,1473
|
|
34
|
+
inline_core/parallel/group.py,sha256=PRFyt9_oGvMHumBnaz6byHuZBggie5vvAKGXOCwnarE,5003
|
|
35
|
+
inline_core/parallel/launch.py,sha256=56jD69CTv8feSoL-bAvMrU5hk6H7lsnQ7eQAH8JVooY,1374
|
|
36
|
+
inline_core/parallel/protocol.py,sha256=hWrQZxF95qvme0BpzvhmXiUxkbWn3mMzV7l3s0bCxDg,1792
|
|
37
|
+
inline_core/parallel/registry.py,sha256=EIS_HHZYQTJb-vM7uw4J_cJ2qHB5HzuWB9nENMf6fKM,1062
|
|
38
|
+
inline_core/parallel/worker.py,sha256=tDCo6I9viLb0FX5TNSI8MvxXkrZyKEnJL-DALkISoa0,2802
|
|
39
|
+
inline_core/runtime/__init__.py,sha256=y8C-sM8VCrTusEpFnFQt8qiSBlYNbB54rBBXgPDfCns,87
|
|
40
|
+
inline_core/runtime/context.py,sha256=K7hBoW9r9JWRZMIfDirSVlJaf7dNwbmMI0Q98YLDsbI,694
|
|
41
|
+
inline_core/runtime/file_store.py,sha256=O1vzct5T7O50Pmyj-kO_QQG_RA15hSyeium4R7560Gk,1542
|
|
42
|
+
inline_core/runtime/progress.py,sha256=FFhDG43Tn9e1BLKPkVo6zP_Oah0FX4k1lpljwYga7dw,1749
|
|
43
|
+
inline_core/runtime/run.py,sha256=pikQokxtvkPlXbtKhtH8jlWxgCkk1lGn0BqpEelkCVc,3300
|
|
44
|
+
inline_core/runtime/store.py,sha256=sSRJ1iq0OaZgZxuez0N6H65PhxNIRTXSXIWWkLPqIx4,593
|
|
45
|
+
inline_core/sampling/__init__.py,sha256=RgupvqfbTTGD7Q6C7ot6OLkB_plgbdA-lQ3mKQnNyog,100
|
|
46
|
+
inline_core/sampling/batch.py,sha256=VT0FxNAchr4RF64SI1dtKMzyc-DbDfxOkKYiJa2G8lw,4043
|
|
47
|
+
inline_core/server/__init__.py,sha256=kGKP7AnFR5P3yRSgdsJbQAZl9dbW6vdm1375c8XwLO0,99
|
|
48
|
+
inline_core/server/__main__.py,sha256=iVqgj9hayCpjm4BLRTqHvakPVh6wFJVeYnAUECUIN-U,2194
|
|
49
|
+
inline_core/server/app.py,sha256=gpEHDpkgMq0VpEezTEVeLcIzbinEobiDB_outY3UiSE,13338
|
|
50
|
+
inline_core/server/assets.py,sha256=BLYGg0IDCDLmipJl9sMFNsRrsmSpWiu2HGyB2PE7CA8,1297
|
|
51
|
+
inline_core/server/bootstrap.py,sha256=OZA24PRcg-nNH_X5jiu-hKoVLQcZG5vaS4Ui33pAkw4,691
|
|
52
|
+
inline_core/server/frontend.py,sha256=_uwnHUyle84y9CgpdRvwfcqj72QAk0Gl_bf1p_DbJxs,1304
|
|
53
|
+
inline_core/server/manager.py,sha256=wieojfPLsmurdM4I2xMtnorJmNa0AlYuYgShsvoIxR0,7164
|
|
54
|
+
inline_core/server/rpc.py,sha256=QawFrg-f8PeronbeArIu64mjRid_eTAzcCaeowaLNGk,2430
|
|
55
|
+
inline_core/server/run_store.py,sha256=Tv23bLR9egGkh34bOvZs6ErCPV55zfHxMcbiwueddvc,6396
|
|
56
|
+
inline_core/server/serialize.py,sha256=B-kJtnm9CnBELClD9mJ3BE4KwyONkBzKsPLTnvcBlzE,4592
|
|
57
|
+
inline_core/studio/__init__.py,sha256=HLpAtZ__YKexuVUxE5V_vZCp-5ziCjR6-BfgBA2-l4c,470
|
|
58
|
+
inline_core/studio/assets.py,sha256=rgpfl-bhQH89PdmYDmbf5ncN-vE8immezZqJ1E1K6lg,6904
|
|
59
|
+
inline_core/studio/config.py,sha256=umgkmSRTbyi55HjAIeE2y9rHiWaFnUvnp599KX7Cs0E,1149
|
|
60
|
+
inline_core/studio/fal.py,sha256=k6fvAJXf7taIfjXa6SP5ve1GjWcAE9CQZoJw4Ec6hRw,10072
|
|
61
|
+
inline_core/studio/frames.py,sha256=JQ5y7rVrSR8F4kC_JJRdTEzUd420j3rE_3GlKpPrii0,19211
|
|
62
|
+
inline_core/studio/generation.py,sha256=wAcxt6WjCLz3GKqN68A0-0AhVnbr6DI9atA4vp_1EDE,5592
|
|
63
|
+
inline_core/studio/graph_build.py,sha256=oUI6W_360ANfeWfKbhBf0QrructSH5XTLq7Pje_QPEY,3984
|
|
64
|
+
inline_core/studio/handlers.py,sha256=OsLR5vRlY-2nvyO_f_ZP-2DMnva5f-j6I-nL9_lRubw,11259
|
|
65
|
+
inline_core/studio/models.py,sha256=xPFeaguQ2uHGJ5LTNih7eBPUXjNlcmxJs-RQjQrvaPk,7675
|
|
66
|
+
inline_core/studio/moodboard.py,sha256=axyecN-osYyMc6PHMa5zPl4BemliJOA5oZPbaGBm4jU,13697
|
|
67
|
+
inline_core/studio/schema.py,sha256=b1Pxh2FqtNIcgTFxKFs17dtYeV0N5qcDItTJaCPQIm8,10461
|
|
68
|
+
inline_core/studio/store.py,sha256=_1BTFxyuX2xM_J3TMsQIAmU4149YtMji_aOwTzFVJ5E,10875
|
|
69
|
+
inline_core/studio/timeline/__init__.py,sha256=Sl40NaBVACX24LFgzVt4eCKMS0Zcp5JHKD3z7aakTWs,357
|
|
70
|
+
inline_core/studio/timeline/compose.py,sha256=e6a1PU9H6YVdcNxciBBqX4EtE4YSCcEWaCzDyZN6Mg4,4654
|
|
71
|
+
inline_core/studio/timeline/ffmpeg.py,sha256=sP6DyZrADU3XvFRDgr_p9PVKY6gC2wYXoaaSkBpIeaU,2610
|
|
72
|
+
inline_core/studio/timeline/render.py,sha256=9VMSInQl9nsABCVH1g_1G6-055xZpn0PF1tpfL0x96I,4820
|
|
73
|
+
inline_core/studio/timeline/resolve.py,sha256=Ul8wyqABx3ahwsnhZTHCHmZz8ZWePii5O6c4IzGm8Kk,8006
|
|
74
|
+
inline_core-1.1.1.dist-info/METADATA,sha256=kWosbWSl_Ok7e--a55-2zOesoc8XkS0uPjAwXdo1Zf0,1477
|
|
75
|
+
inline_core-1.1.1.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
76
|
+
inline_core-1.1.1.dist-info/entry_points.txt,sha256=NSrAKL7Qu4Foag5hVHpYYCIVEAUkY9cz_NybvpqNZgw,67
|
|
77
|
+
inline_core-1.1.1.dist-info/RECORD,,
|