inline-core 1.3.1__tar.gz → 1.3.12__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.
- {inline_core-1.3.1 → inline_core-1.3.12}/PKG-INFO +24 -28
- {inline_core-1.3.1 → inline_core-1.3.12}/README.md +23 -27
- {inline_core-1.3.1 → inline_core-1.3.12}/pyproject.toml +1 -1
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/apply.py +27 -13
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/charfile.py +31 -2
- inline_core-1.3.12/src/inline_core/characters/encode.py +770 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/library.py +5 -1
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/scoring.py +90 -8
- inline_core-1.3.12/src/inline_core/characters/verify.py +172 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/character/runner.py +239 -27
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/characterreqs.py +3 -1
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/loaders.py +21 -0
- inline_core-1.3.12/src/inline_core/models/minimaxh3/nvfp4.py +196 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/pipeline.py +270 -18
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/requirements.py +100 -15
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/runner.py +170 -12
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/pipeline_runtime.py +27 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/trainingreqs.py +2 -1
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/characters.py +126 -29
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/generation.py +8 -2
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/handlers.py +4 -3
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/models.py +32 -4
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/recipe.py +9 -3
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/training.py +8 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/training_store.py +28 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_character_nodes.py +305 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_encode.py +150 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_rpc.py +51 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_scoring.py +53 -0
- inline_core-1.3.12/tests/test_h3_characters.py +424 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_nodes.py +60 -11
- inline_core-1.3.12/tests/test_minimaxh3_nvfp4.py +190 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_model_download_queue.py +40 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_recipe.py +67 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_rpc.py +2 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_training.py +13 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_requirements.py +19 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/uv.lock +1 -1
- inline_core-1.3.1/src/inline_core/characters/encode.py +0 -418
- {inline_core-1.3.1 → inline_core-1.3.12}/.gitignore +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/.python-version +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/CLAUDE.md +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/main.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/scripts/flux2_train_matrix.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/scripts/minimax_h3_lora_check.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/scripts/minimax_h3_train_matrix.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/scripts/reference.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/weights.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/components/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/components/conditioning.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/components/interfaces.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/config.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/auto.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/detect.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/memory.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/policy.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/probe.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/types.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/errors.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/api.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/constraints.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/fetch.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/handlers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/importer.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/install.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/loader.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/manifest.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/models.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/paths.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/resolve.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/scanner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/state.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/tools.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/ffmpeg.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/cache.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/descriptor.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/executor.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/loader_runners.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/primitives.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/registry.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/runners.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/schema.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/topo.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/validate.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/media.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/catalog.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/character/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/checkpoint.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/controlspace.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/controlnet.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/embeds.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/provider.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/variants.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/keymap.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/convert.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/depth_control.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/img2img.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/provider.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/lora.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/lora_keys.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/memory.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/pipeline.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/provider.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/allocator_trim_strategy.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/batch_split.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/block_fetcher.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/builder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/disk.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/pool.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/provider.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/source.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/stream_sync.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/utils.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/wrapper.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/audio_mux.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/hlg.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/primaries.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/yuv.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/diffusion_steps.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/guiders.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/noisers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/patchifiers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/protocols.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/schedulers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/exceptions.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/item.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/mask_utils.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/attention_strength_wrapper.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/keyframe_cond.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/keyframe_slots.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/latent_cond.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/mask_cond.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/noise_mask_cond.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/reference_audio_cond.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/reference_video_cond.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/devices.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/duration_head/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/duration_head/duration_head.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/duration_head/model_configurator.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/guidance/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/guidance/perturbations.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/hdr.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/attention_ops.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/fuse_loras.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/helpers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/kernels.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/module_ops.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/primitives.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/registry.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/sd_ops.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/sft_loader.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/single_gpu_model_builder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/modality_tiling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/attention.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/audio_vae.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/causal_conv_2d.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/causality_axis.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/downsample.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/model_configurator.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/ops.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/resnet.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/upsample.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/audio_vae/vocoder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/common/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/common/normalization.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/disposable.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/model_protocol.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/adaln.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/attention.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/compiling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/cudagraph_capture.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/feed_forward.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/gelu_approx.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/modality.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/model.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/model_configurator.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/ops.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/rope.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/text_projection.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/timestep_embedding.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/transformer.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/transformer_args.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/blur_downsample.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/model.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/model_configurator.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/pixel_shuffle.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/res_block.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/spatial_rational_resampler.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/attention.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/conv_video_decoder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/convolution.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/diffusion_tiling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/diffusion_video_decoder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/enums.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/memory_efficient_decode.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/model_configurator.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/normalization.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/ops.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/resnet.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/sampling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/apply.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/attention.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/blocks.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/attn.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/block.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/context.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/chunked/mlp.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/attn.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/block.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/context.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/combined/mlp.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/compiling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/config.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/det_attn_rope.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/apply_dsl.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/attn.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/block.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/dsl_kernels/chain.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/fallback_na/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/fallback_na/eager.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/fallback_na/triton_na.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/layers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/qkv.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/rope.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/rope_math.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/transformer/swiglu.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/video_vae/video_vae.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/accelerate_wrapper.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/batch_parallel_wrapper.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/broadcast_wrapper.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/loader.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/sharded_sd.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/attention.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/sequence_parallel.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/tiled_data_parallel.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/vae/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/vae/distributed_decoder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/blockwise/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/blockwise/_impl.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/fp8_cast.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/fp8_scaled_mm.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/convert.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/fuse.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/linear.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/prequant.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/types.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/policy.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/embeddings_connector.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/embeddings_processor.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/base_encoder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/encoder_configurator.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma3_i2v_system_prompt.txt +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma3_t2v_system_prompt.txt +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma4_i2v_system_prompt.txt +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/encoders/prompts/gemma4_t2v_system_prompt.txt +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/feature_extractor.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/gemma_assets.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/gemma/tokenizer.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/tiling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/tools.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/types.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/utils.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/a2vid_two_stage.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/dfr_layout.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/dfr_pipeline.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/distilled.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/distilled_mgpu.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/dubit.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/hdr_ic_lora.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ic_lora.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/iclora_utils.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/keyframe_interpolation.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/_broadcast.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/bp_gemma_builder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/controller.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/delegating_builder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/fleet.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/gemma_builders.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/nccl_groups.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/sp_builder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/tdp_builder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/vae_builders.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/weight_tracker.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/retake.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/t2a_one_stage.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_one_stage.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages_hq.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages_hq_mgpu.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages_mgpu.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/args.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/blocks.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/constants.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/denoisers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/gpu_model.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/helpers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/color_config.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/decode.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/encode.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/exr.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/range_map.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/media_io/resize.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/model_paths.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/quantization_factory.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/res2s.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/samplers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/types.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/adaln.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/keys.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/load.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/lora_keys.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/provider.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vae_keys.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/autoencoder_kl_minimax_h3.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/autoencoder_kl_minimax_h3_audio.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/before_denoise.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/before_encoder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/decoders.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/denoise.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/encoders.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/modular_blocks_minimax_h3.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/modular_pipeline.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/packing.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/packing_ref2va.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/scheduling_minimax_h3.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/transformer_minimax_h3.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/offload.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/prepared.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/preprocess/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/preprocess/requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/preprocess/runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/references.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/registry_index.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/sampling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/training/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/training/runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/video_params.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/primitives.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/provider.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/config.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/group.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/launch.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/protocol.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/registry.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/worker.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/context.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/file_store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/progress.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/run.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/video_encode.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/sampling/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/sampling/batch.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/__main__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/app.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/assets.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/bootstrap.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/frontend.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/manager.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/rpc.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/run_store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/serialize.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/version.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/activity.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/assets.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/config.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/dataset_import.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/fal.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/frames.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/graph_build.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/image_meta.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/moodboard.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/peaks.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/schema.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/system_stats.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/compose.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/ffmpeg.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/render.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/resolve.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/takes.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/__init__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/__main__.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/arch.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/cache.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/caption.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/dataset.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/h3.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/ltx25.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/models.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/precache_store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/protocol.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/trainer.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/conftest.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/helpers.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/reference/lookalike_faces.json +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_cache.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_catalog.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_character_requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_apply.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_library.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_wiring.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_charfile.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_checkpoint.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_clip_grid_parity.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_config.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_dataset_import.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_device_detect.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_encoder_parking.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_executor.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_api.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_install.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_manifest.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_resolve.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_scanner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_spine.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_state.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_file_store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_controlnet.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_folder.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_resolve.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_training.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_variants.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_frontend_serving.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_hidden_nodes.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_keymap.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_convert.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_depth_control.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_loader_runners.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_loaders.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_lora.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_lora_download.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_lora_keys.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_nodes.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_training.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_wired_refs.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_manager_queue.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_memory_policy.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_adaln.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_keys.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_load.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_lora_keys.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_training.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_model_registry_index.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_model_requirements.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_offload_prepared.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_output_kind_contract.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_parallel_group.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_pipeline_cache.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_precache_store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_primitives.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_references.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_rpc_bridge.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_run_store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_sampling.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_schema.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_server.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_staged_residency.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_activity.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_assets.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_fal.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_frames.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_generation.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_graph_build.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_models.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_moodboard.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_multi_reference.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_node_size.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_peaks.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_schema.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_store.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_timeline.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_take_bytes.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_topo.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_arch.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_dataset.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_models.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_nodes.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_resolve.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_snapshots.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_validate.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_version_report.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_video_encode.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_video_params.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_webui_install.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_xfuser_sampler.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_zimage_primitives.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_zimage_resolve.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_zimage_runner.py +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/webui.bat +0 -0
- {inline_core-1.3.1 → inline_core-1.3.12}/webui.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: inline-core
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.12
|
|
4
4
|
Summary: The generation engine behind Inline Studio.
|
|
5
5
|
License-Expression: GPL-3.0-or-later
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -78,8 +78,9 @@ xDiT). It is Inline Studio's built-in render backend.
|
|
|
78
78
|
Models today, all running locally on your own GPU: **Z-Image** (Alibaba Tongyi), a 6B rectified-flow
|
|
79
79
|
diffusion transformer and the model xDiT already supports, so the multi-GPU split works on it from the
|
|
80
80
|
start; **Krea 2** (Krea AI), a 12.9B single-stream MMDiT released as an undistilled RAW base plus an
|
|
81
|
-
8-step distilled Turbo; **FLUX.2** (Black Forest Labs);
|
|
82
|
-
its soundtrack in a single pass.
|
|
81
|
+
8-step distilled Turbo; **FLUX.2** (Black Forest Labs), natively multi-reference; **MiniMax H3**
|
|
82
|
+
(MiniMax), which generates video and its soundtrack in a single pass; and **LTX-2.5** (Lightricks), a
|
|
83
|
+
22B video model, also with sound.
|
|
83
84
|
|
|
84
85
|
Core also runs the **LoRA trainer** behind Inline Studio's Trainer canvas, so the same engine that
|
|
85
86
|
generates can fine-tune Z-Image, Krea 2, FLUX.2, MiniMax H3 and LTX-2.5 on your own images without a cloud
|
|
@@ -89,10 +90,10 @@ dependencies sit behind the `training` extra. See the
|
|
|
89
90
|
|
|
90
91
|
> Status: the graph engine, the typed `/v1` HTTP + websocket API (durable runs, streamed progress,
|
|
91
92
|
> coalescing), the model-dir scan, the device + memory policy (profiles, dtype, offload, int8), the
|
|
92
|
-
> low-level primitive node vocabulary, the model runners above,
|
|
93
|
-
>
|
|
94
|
-
>
|
|
95
|
-
>
|
|
93
|
+
> low-level primitive node vocabulary, the model runners above, single-image multi-GPU (an xDiT
|
|
94
|
+
> worker group behind the sampler seam), and the LoRA trainer all run on real hardware. Cross-request
|
|
95
|
+
> batching and out-of-process custom nodes are built as seams but are not yet exercised on real
|
|
96
|
+
> hardware.
|
|
96
97
|
|
|
97
98
|
## Engine design
|
|
98
99
|
|
|
@@ -131,18 +132,17 @@ Or let the launcher do it: `./webui.sh --install --extra runtime` (Windows: `.\w
|
|
|
131
132
|
## Models
|
|
132
133
|
|
|
133
134
|
Drop files into the models dir (default `./models`, override with `INLINE_MODELS_DIR`), ComfyUI-style,
|
|
134
|
-
by category
|
|
135
|
+
by category. One example per category below; the per-model file list for all five architectures is in
|
|
136
|
+
the [Inline Studio README](../README.md#generate).
|
|
135
137
|
|
|
136
138
|
```
|
|
137
139
|
models/
|
|
138
|
-
diffusion_models/ z_image_turbo_bf16.safetensors <-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
qwen3vl_4b_bf16.safetensors <- Krea 2
|
|
145
|
-
loras/ controlnet/ checkpoints/ ...
|
|
140
|
+
diffusion_models/ z_image_turbo_bf16.safetensors <- transformers, one file per model
|
|
141
|
+
vae/ qwen_image_vae_diffusers.safetensors <- Krea 2, diffusers format
|
|
142
|
+
text_encoders/ qwen_3_4b.safetensors <- Z-Image and FLUX.2 klein 4B
|
|
143
|
+
MiniMax-H3-text-encoder/ <- a folder, not a single file
|
|
144
|
+
loras/ trained adapters and control LoRAs
|
|
145
|
+
controlnet/ checkpoints/ ...
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
**Z-Image loads from a single diffusion `.safetensors`.** Drop that one ComfyUI-style file in
|
|
@@ -151,8 +151,8 @@ a VAE + text-encoder + tokenizer, resolved from **local files** - `vae/*.safeten
|
|
|
151
151
|
HF-format `text_encoders/` dir.
|
|
152
152
|
|
|
153
153
|
**Nothing is ever downloaded as a side effect of a render.** Every load runs `local_files_only=True`,
|
|
154
|
-
so a missing model
|
|
155
|
-
paths:
|
|
154
|
+
so a missing model fails immediately with a clear error and never triggers a silent multi-GB fetch.
|
|
155
|
+
Models arrive by exactly two paths:
|
|
156
156
|
|
|
157
157
|
1. **You place files** under `models/` (bring-your-own / fully offline); or
|
|
158
158
|
2. **You download them explicitly** from the Z-Image node's model popup in the UI - it lists the
|
|
@@ -178,9 +178,9 @@ streamed tensor by tensor onto the GPU.
|
|
|
178
178
|
renders any node generically - adding a node type needs no UI release.
|
|
179
179
|
|
|
180
180
|
**High-level model nodes are what the user sees.** Generation is one-click: you drop a single
|
|
181
|
-
**Z-Image Turbo**, **Krea 2
|
|
182
|
-
node hooks up the diffusion model, VAE, and text-encoder behind the scenes - no
|
|
183
|
-
wiring.
|
|
181
|
+
**Z-Image Turbo**, **Krea 2**, **FLUX.2**, **MiniMax H3** or **LTX-2.5** node, wire a Prompt into
|
|
182
|
+
it, and hit Run. The node hooks up the diffusion model, VAE, and text-encoder behind the scenes - no
|
|
183
|
+
loader/sampler wiring.
|
|
184
184
|
|
|
185
185
|
Underneath, a **low-level primitive vocabulary** exists (`load/diffusion-model`, `load/vae`,
|
|
186
186
|
`load/text-encoder`, `encode/text`, `latent/empty`, `sample`, `vae/decode`, `vae/encode`) - the
|
|
@@ -192,8 +192,7 @@ and never appear in the add-node menu. Engine handles (`model`, `vae`, `text-enc
|
|
|
192
192
|
|
|
193
193
|
Cut a single image's latency by running its denoise across several GPUs. The denoise loop (the
|
|
194
194
|
iterative sampling step) is the expensive part of a render; with two or more GPUs, Inline Core runs
|
|
195
|
-
each step's transformer forward collectively across them so one image finishes faster.
|
|
196
|
-
"one image per GPU" (independent renders); it is one image whose sampling is shared by all the GPUs.
|
|
195
|
+
each step's transformer forward collectively across them so one image finishes faster.
|
|
197
196
|
|
|
198
197
|
It is done with xDiT (`xfuser`), which parallelizes diffusion-transformer inference. xfuser runs in
|
|
199
198
|
an isolated worker group the engine spawns (one process per GPU via `torchrun`) and talks to over
|
|
@@ -226,14 +225,11 @@ Enabling it:
|
|
|
226
225
|
```
|
|
227
226
|
The degrees multiply to the world size, which must equal the number of GPUs.
|
|
228
227
|
|
|
229
|
-
The device policy and the worker-group IPC are in place and tested with a stub worker; the real
|
|
230
|
-
xfuser denoise lands with the GPU-side Z-Image runner.
|
|
231
|
-
|
|
232
228
|
## Memory: fit a big model onto a small GPU
|
|
233
229
|
|
|
234
230
|
When a model is too large to hold full-precision on your GPU - or larger than your system RAM - Inline
|
|
235
231
|
Core fits it to the machine automatically, **with no flags**. This is the low-VRAM path, and it aims to
|
|
236
|
-
|
|
232
|
+
just run, with no profiles to tune.
|
|
237
233
|
|
|
238
234
|
- **Weights stream straight to the GPU.** Each component loads directly onto the GPU from its
|
|
239
235
|
memory-mapped `.safetensors` - the engine never materializes a full copy in system RAM first. So you
|
|
@@ -242,7 +238,7 @@ Core fits it to the machine automatically, **with no flags**. This is the low-VR
|
|
|
242
238
|
- **Auto-fit picks the lightest plan that fits.** The policy sizes the model against your VRAM and
|
|
243
239
|
chooses, in order: full-precision **resident** → **int8 resident** (weight-only quantization halves the
|
|
244
240
|
big weights so they fit on the GPU) → **CPU-offload streaming** (submodules move on/off the GPU). A card
|
|
245
|
-
that
|
|
241
|
+
that cannot hold the model at full precision quantizes to int8 on its own, with no flag to set.
|
|
246
242
|
- **Load-time fit check.** A model too large for VRAM + RAM fails fast with a clear message on the node,
|
|
247
243
|
instead of crashing mid-load. The model popup also shows the estimate up front (fits / will run int8 /
|
|
248
244
|
won't fit).
|
|
@@ -8,8 +8,9 @@ xDiT). It is Inline Studio's built-in render backend.
|
|
|
8
8
|
Models today, all running locally on your own GPU: **Z-Image** (Alibaba Tongyi), a 6B rectified-flow
|
|
9
9
|
diffusion transformer and the model xDiT already supports, so the multi-GPU split works on it from the
|
|
10
10
|
start; **Krea 2** (Krea AI), a 12.9B single-stream MMDiT released as an undistilled RAW base plus an
|
|
11
|
-
8-step distilled Turbo; **FLUX.2** (Black Forest Labs);
|
|
12
|
-
its soundtrack in a single pass.
|
|
11
|
+
8-step distilled Turbo; **FLUX.2** (Black Forest Labs), natively multi-reference; **MiniMax H3**
|
|
12
|
+
(MiniMax), which generates video and its soundtrack in a single pass; and **LTX-2.5** (Lightricks), a
|
|
13
|
+
22B video model, also with sound.
|
|
13
14
|
|
|
14
15
|
Core also runs the **LoRA trainer** behind Inline Studio's Trainer canvas, so the same engine that
|
|
15
16
|
generates can fine-tune Z-Image, Krea 2, FLUX.2, MiniMax H3 and LTX-2.5 on your own images without a cloud
|
|
@@ -19,10 +20,10 @@ dependencies sit behind the `training` extra. See the
|
|
|
19
20
|
|
|
20
21
|
> Status: the graph engine, the typed `/v1` HTTP + websocket API (durable runs, streamed progress,
|
|
21
22
|
> coalescing), the model-dir scan, the device + memory policy (profiles, dtype, offload, int8), the
|
|
22
|
-
> low-level primitive node vocabulary, the model runners above,
|
|
23
|
-
>
|
|
24
|
-
>
|
|
25
|
-
>
|
|
23
|
+
> low-level primitive node vocabulary, the model runners above, single-image multi-GPU (an xDiT
|
|
24
|
+
> worker group behind the sampler seam), and the LoRA trainer all run on real hardware. Cross-request
|
|
25
|
+
> batching and out-of-process custom nodes are built as seams but are not yet exercised on real
|
|
26
|
+
> hardware.
|
|
26
27
|
|
|
27
28
|
## Engine design
|
|
28
29
|
|
|
@@ -61,18 +62,17 @@ Or let the launcher do it: `./webui.sh --install --extra runtime` (Windows: `.\w
|
|
|
61
62
|
## Models
|
|
62
63
|
|
|
63
64
|
Drop files into the models dir (default `./models`, override with `INLINE_MODELS_DIR`), ComfyUI-style,
|
|
64
|
-
by category
|
|
65
|
+
by category. One example per category below; the per-model file list for all five architectures is in
|
|
66
|
+
the [Inline Studio README](../README.md#generate).
|
|
65
67
|
|
|
66
68
|
```
|
|
67
69
|
models/
|
|
68
|
-
diffusion_models/ z_image_turbo_bf16.safetensors <-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
qwen3vl_4b_bf16.safetensors <- Krea 2
|
|
75
|
-
loras/ controlnet/ checkpoints/ ...
|
|
70
|
+
diffusion_models/ z_image_turbo_bf16.safetensors <- transformers, one file per model
|
|
71
|
+
vae/ qwen_image_vae_diffusers.safetensors <- Krea 2, diffusers format
|
|
72
|
+
text_encoders/ qwen_3_4b.safetensors <- Z-Image and FLUX.2 klein 4B
|
|
73
|
+
MiniMax-H3-text-encoder/ <- a folder, not a single file
|
|
74
|
+
loras/ trained adapters and control LoRAs
|
|
75
|
+
controlnet/ checkpoints/ ...
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
**Z-Image loads from a single diffusion `.safetensors`.** Drop that one ComfyUI-style file in
|
|
@@ -81,8 +81,8 @@ a VAE + text-encoder + tokenizer, resolved from **local files** - `vae/*.safeten
|
|
|
81
81
|
HF-format `text_encoders/` dir.
|
|
82
82
|
|
|
83
83
|
**Nothing is ever downloaded as a side effect of a render.** Every load runs `local_files_only=True`,
|
|
84
|
-
so a missing model
|
|
85
|
-
paths:
|
|
84
|
+
so a missing model fails immediately with a clear error and never triggers a silent multi-GB fetch.
|
|
85
|
+
Models arrive by exactly two paths:
|
|
86
86
|
|
|
87
87
|
1. **You place files** under `models/` (bring-your-own / fully offline); or
|
|
88
88
|
2. **You download them explicitly** from the Z-Image node's model popup in the UI - it lists the
|
|
@@ -108,9 +108,9 @@ streamed tensor by tensor onto the GPU.
|
|
|
108
108
|
renders any node generically - adding a node type needs no UI release.
|
|
109
109
|
|
|
110
110
|
**High-level model nodes are what the user sees.** Generation is one-click: you drop a single
|
|
111
|
-
**Z-Image Turbo**, **Krea 2
|
|
112
|
-
node hooks up the diffusion model, VAE, and text-encoder behind the scenes - no
|
|
113
|
-
wiring.
|
|
111
|
+
**Z-Image Turbo**, **Krea 2**, **FLUX.2**, **MiniMax H3** or **LTX-2.5** node, wire a Prompt into
|
|
112
|
+
it, and hit Run. The node hooks up the diffusion model, VAE, and text-encoder behind the scenes - no
|
|
113
|
+
loader/sampler wiring.
|
|
114
114
|
|
|
115
115
|
Underneath, a **low-level primitive vocabulary** exists (`load/diffusion-model`, `load/vae`,
|
|
116
116
|
`load/text-encoder`, `encode/text`, `latent/empty`, `sample`, `vae/decode`, `vae/encode`) - the
|
|
@@ -122,8 +122,7 @@ and never appear in the add-node menu. Engine handles (`model`, `vae`, `text-enc
|
|
|
122
122
|
|
|
123
123
|
Cut a single image's latency by running its denoise across several GPUs. The denoise loop (the
|
|
124
124
|
iterative sampling step) is the expensive part of a render; with two or more GPUs, Inline Core runs
|
|
125
|
-
each step's transformer forward collectively across them so one image finishes faster.
|
|
126
|
-
"one image per GPU" (independent renders); it is one image whose sampling is shared by all the GPUs.
|
|
125
|
+
each step's transformer forward collectively across them so one image finishes faster.
|
|
127
126
|
|
|
128
127
|
It is done with xDiT (`xfuser`), which parallelizes diffusion-transformer inference. xfuser runs in
|
|
129
128
|
an isolated worker group the engine spawns (one process per GPU via `torchrun`) and talks to over
|
|
@@ -156,14 +155,11 @@ Enabling it:
|
|
|
156
155
|
```
|
|
157
156
|
The degrees multiply to the world size, which must equal the number of GPUs.
|
|
158
157
|
|
|
159
|
-
The device policy and the worker-group IPC are in place and tested with a stub worker; the real
|
|
160
|
-
xfuser denoise lands with the GPU-side Z-Image runner.
|
|
161
|
-
|
|
162
158
|
## Memory: fit a big model onto a small GPU
|
|
163
159
|
|
|
164
160
|
When a model is too large to hold full-precision on your GPU - or larger than your system RAM - Inline
|
|
165
161
|
Core fits it to the machine automatically, **with no flags**. This is the low-VRAM path, and it aims to
|
|
166
|
-
|
|
162
|
+
just run, with no profiles to tune.
|
|
167
163
|
|
|
168
164
|
- **Weights stream straight to the GPU.** Each component loads directly onto the GPU from its
|
|
169
165
|
memory-mapped `.safetensors` - the engine never materializes a full copy in system RAM first. So you
|
|
@@ -172,7 +168,7 @@ Core fits it to the machine automatically, **with no flags**. This is the low-VR
|
|
|
172
168
|
- **Auto-fit picks the lightest plan that fits.** The policy sizes the model against your VRAM and
|
|
173
169
|
chooses, in order: full-precision **resident** → **int8 resident** (weight-only quantization halves the
|
|
174
170
|
big weights so they fit on the GPU) → **CPU-offload streaming** (submodules move on/off the GPU). A card
|
|
175
|
-
that
|
|
171
|
+
that cannot hold the model at full precision quantizes to int8 on its own, with no flag to set.
|
|
176
172
|
- **Load-time fit check.** A model too large for VRAM + RAM fails fast with a clear message on the node,
|
|
177
173
|
instead of crashing mid-load. The model popup also shows the estimate up front (fits / will run int8 /
|
|
178
174
|
won't fit).
|
|
@@ -42,17 +42,27 @@ class AppliedCharacter:
|
|
|
42
42
|
#: turned down and the character wire carries no controls of its own.
|
|
43
43
|
self.lora_strength = lora_strength
|
|
44
44
|
|
|
45
|
-
def prompt_prefix(self, first_position: int) -> str:
|
|
46
|
-
"""Text naming the positions the character lands on, so
|
|
45
|
+
def prompt_prefix(self, first_position: int, style: str = "ordinal") -> str:
|
|
46
|
+
"""Text naming the positions the character lands on, so positional prompting resolves.
|
|
47
|
+
|
|
48
|
+
``style`` because a model only resolves the form it was trained on: FLUX.2 reads the ordinal
|
|
49
|
+
prose below, MiniMax H3 reads ``<Picture N>`` tokens (``models/references.py``), and handing
|
|
50
|
+
either the other one names positions it cannot see.
|
|
51
|
+
"""
|
|
47
52
|
if not self.refs:
|
|
48
53
|
# A LoRA carries the likeness, so the description is all the prompt needs.
|
|
49
54
|
detail = " ".join(self.description.split())
|
|
50
55
|
return f"{detail} " if detail else ""
|
|
51
|
-
positions = [
|
|
52
|
-
if
|
|
56
|
+
positions = [first_position + i for i in range(len(self.refs))]
|
|
57
|
+
if style == "token":
|
|
58
|
+
tokens = " ".join(f"<Picture {n}>" for n in positions)
|
|
59
|
+
plural = "" if len(positions) == 1 else "each"
|
|
60
|
+
which = f"{tokens} {'shows' if not plural else 'show'}"
|
|
61
|
+
elif len(positions) == 1:
|
|
53
62
|
which = f"Image {positions[0]} shows"
|
|
54
63
|
else:
|
|
55
|
-
|
|
64
|
+
ordinals = [str(n) for n in positions]
|
|
65
|
+
which = f"Images {', '.join(ordinals[:-1])} and {ordinals[-1]} show"
|
|
56
66
|
line = f"{which} {self.name}, the same character in every image."
|
|
57
67
|
detail = " ".join(self.description.split())
|
|
58
68
|
if not detail:
|
|
@@ -67,7 +77,9 @@ def _cache_root() -> Path:
|
|
|
67
77
|
return data_dir() / "characters"
|
|
68
78
|
|
|
69
79
|
|
|
70
|
-
def char_apply(
|
|
80
|
+
def char_apply(
|
|
81
|
+
chosen: str, arch: str = encode.FLUX2_KLEIN_ARCH, prefer: str | None = None
|
|
82
|
+
) -> AppliedCharacter | None:
|
|
71
83
|
"""How a character applies on ``arch``, or None when none is picked. An unreadable pick raises
|
|
72
84
|
rather than silently generating the wrong person.
|
|
73
85
|
|
|
@@ -84,18 +96,20 @@ def char_apply(chosen: str, arch: str = encode.FLUX2_KLEIN_ARCH) -> AppliedChara
|
|
|
84
96
|
|
|
85
97
|
doc = cf.read(path)
|
|
86
98
|
digest = library.content_hash(path)
|
|
87
|
-
|
|
99
|
+
# Whether this arch reads references at all, which is exactly the archs with a policy for them.
|
|
100
|
+
references = arch in encode.REFERENCE_POLICIES
|
|
88
101
|
|
|
89
102
|
if references and not cf.payload_valid(doc.manifest, arch, encode.PAYLOAD_ENCODER_VERSION):
|
|
90
|
-
doc = _recompile(doc, path)
|
|
103
|
+
doc = _recompile(doc, path, arch)
|
|
91
104
|
digest = library.content_hash(path)
|
|
92
105
|
|
|
93
106
|
description = _description(doc)
|
|
94
107
|
lora = _extract_lora(doc, digest, arch)
|
|
95
108
|
strength = encode.lora_strength(doc.manifest, arch)
|
|
96
109
|
# A trained adapter wins unless the character says otherwise: the user asked for it explicitly,
|
|
97
|
-
# and loading both would apply the identity twice.
|
|
98
|
-
|
|
110
|
+
# and loading both would apply the identity twice. `prefer` overrides both, for a node that can
|
|
111
|
+
# only run one way: H3's reference partition needs a reference and cannot use an adapter alone.
|
|
112
|
+
mode = prefer or doc.manifest.apply.get(arch) or ("lora" if lora else "reference")
|
|
99
113
|
# No reference channel on this arch, so the adapter is the only way it can apply at all.
|
|
100
114
|
if not references:
|
|
101
115
|
mode = "lora"
|
|
@@ -137,9 +151,9 @@ def _description(doc: cf.CharDoc) -> str:
|
|
|
137
151
|
return raw.decode("utf-8", errors="replace") if raw else ""
|
|
138
152
|
|
|
139
153
|
|
|
140
|
-
def _recompile(doc: cf.CharDoc, path: Path) -> cf.CharDoc:
|
|
154
|
+
def _recompile(doc: cf.CharDoc, path: Path, arch: str = encode.FLUX2_KLEIN_ARCH) -> cf.CharDoc:
|
|
141
155
|
"""Rebuild a stale payload from ``refs/``. Payloads are cache, so this always works."""
|
|
142
|
-
logger.info("Recompiling the %s payload for %s",
|
|
156
|
+
logger.info("Recompiling the %s payload for %s", arch, path.name)
|
|
143
157
|
import io
|
|
144
158
|
|
|
145
159
|
from PIL import Image
|
|
@@ -153,7 +167,7 @@ def _recompile(doc: cf.CharDoc, path: Path) -> cf.CharDoc:
|
|
|
153
167
|
)
|
|
154
168
|
images.append(Image.open(io.BytesIO(raw)).convert("RGB"))
|
|
155
169
|
|
|
156
|
-
encode.build_payload(doc.manifest, doc.members, images)
|
|
170
|
+
encode.build_payload(doc.manifest, doc.members, images, arch)
|
|
157
171
|
cf.write(path, doc)
|
|
158
172
|
return doc
|
|
159
173
|
|
|
@@ -41,6 +41,18 @@ _KEY_ORDER = (
|
|
|
41
41
|
)
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
#: Where a reference came from. Nested inside `refs` rather than a new top-level key on purpose:
|
|
45
|
+
#: `from_json` models only the keys it knows, so a top-level addition is destroyed by any older
|
|
46
|
+
#: build that rewrites the file, and three code paths rewrite one routinely.
|
|
47
|
+
ORIGIN_ORIGINAL = "original"
|
|
48
|
+
ORIGIN_HARVESTED = "harvested"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def origin_of(ref: dict[str, Any]) -> str:
|
|
52
|
+
"""Absent means original: every reference written before harvesting existed is one."""
|
|
53
|
+
return str(ref.get("origin") or ORIGIN_ORIGINAL)
|
|
54
|
+
|
|
55
|
+
|
|
44
56
|
class CharFileError(Exception):
|
|
45
57
|
"""A ``.char`` that cannot be trusted. The message is shown to the user."""
|
|
46
58
|
|
|
@@ -190,12 +202,29 @@ def write(path: Path | str, doc: CharDoc) -> Path:
|
|
|
190
202
|
|
|
191
203
|
|
|
192
204
|
def refs_fingerprint(manifest: Manifest, policy: dict[str, Any]) -> str:
|
|
193
|
-
"""Ordered ref hashes plus policy, so a reorder or a resize-budget change both invalidate.
|
|
194
|
-
|
|
205
|
+
"""Ordered ref hashes plus policy, so a reorder or a resize-budget change both invalidate.
|
|
206
|
+
|
|
207
|
+
Originals only. A harvested reference in here would mark the trained adapter stale the moment
|
|
208
|
+
one was taken, and `_extract_lora` drops a stale adapter with an INFO log - so the loop whose
|
|
209
|
+
whole point is a better adapter would silently switch off the adapter the user already has.
|
|
210
|
+
"""
|
|
211
|
+
kept = [ref for ref in manifest.refs if origin_of(ref) == ORIGIN_ORIGINAL]
|
|
212
|
+
parts = [str(ref.get("sha256", "")) for ref in kept]
|
|
195
213
|
parts.append(json.dumps(policy, sort_keys=True, separators=(",", ":")))
|
|
196
214
|
return hashlib.sha256("\x1f".join(parts).encode()).hexdigest()
|
|
197
215
|
|
|
198
216
|
|
|
217
|
+
def refs_identity(manifest: Manifest) -> str:
|
|
218
|
+
"""Which reference set this is, order included and policy excluded.
|
|
219
|
+
|
|
220
|
+
Separate from `refs_fingerprint`, which answers "is this payload still valid" and so covers
|
|
221
|
+
only the originals and the policy. This answers "were two nodes handed the same character",
|
|
222
|
+
which a payload node needs because it compiles from a doc it is not the one holding.
|
|
223
|
+
"""
|
|
224
|
+
parts = [f"{ref.get('sha256', '')}:{origin_of(ref)}" for ref in manifest.refs]
|
|
225
|
+
return hashlib.sha256("\x1f".join(parts).encode()).hexdigest()
|
|
226
|
+
|
|
227
|
+
|
|
199
228
|
def payload_valid(manifest: Manifest, arch: str, encoder_version: str) -> bool:
|
|
200
229
|
"""Whether ``payloads/<arch>/`` can be used as-is, or must be recompiled from ``refs/``."""
|
|
201
230
|
payload = manifest.payloads.get(arch)
|