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.
Files changed (550) hide show
  1. {inline_core-1.3.1 → inline_core-1.3.12}/PKG-INFO +24 -28
  2. {inline_core-1.3.1 → inline_core-1.3.12}/README.md +23 -27
  3. {inline_core-1.3.1 → inline_core-1.3.12}/pyproject.toml +1 -1
  4. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/apply.py +27 -13
  5. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/charfile.py +31 -2
  6. inline_core-1.3.12/src/inline_core/characters/encode.py +770 -0
  7. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/library.py +5 -1
  8. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/scoring.py +90 -8
  9. inline_core-1.3.12/src/inline_core/characters/verify.py +172 -0
  10. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/character/runner.py +239 -27
  11. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/characterreqs.py +3 -1
  12. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/loaders.py +21 -0
  13. inline_core-1.3.12/src/inline_core/models/minimaxh3/nvfp4.py +196 -0
  14. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/pipeline.py +270 -18
  15. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/requirements.py +100 -15
  16. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/runner.py +170 -12
  17. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/pipeline_runtime.py +27 -0
  18. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/trainingreqs.py +2 -1
  19. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/characters.py +126 -29
  20. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/generation.py +8 -2
  21. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/handlers.py +4 -3
  22. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/models.py +32 -4
  23. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/recipe.py +9 -3
  24. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/training.py +8 -0
  25. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/training_store.py +28 -0
  26. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_character_nodes.py +305 -0
  27. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_encode.py +150 -0
  28. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_rpc.py +51 -0
  29. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_scoring.py +53 -0
  30. inline_core-1.3.12/tests/test_h3_characters.py +424 -0
  31. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_nodes.py +60 -11
  32. inline_core-1.3.12/tests/test_minimaxh3_nvfp4.py +190 -0
  33. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_model_download_queue.py +40 -0
  34. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_recipe.py +67 -0
  35. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_rpc.py +2 -0
  36. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_training.py +13 -0
  37. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_requirements.py +19 -0
  38. {inline_core-1.3.1 → inline_core-1.3.12}/uv.lock +1 -1
  39. inline_core-1.3.1/src/inline_core/characters/encode.py +0 -418
  40. {inline_core-1.3.1 → inline_core-1.3.12}/.gitignore +0 -0
  41. {inline_core-1.3.1 → inline_core-1.3.12}/.python-version +0 -0
  42. {inline_core-1.3.1 → inline_core-1.3.12}/CLAUDE.md +0 -0
  43. {inline_core-1.3.1 → inline_core-1.3.12}/main.py +0 -0
  44. {inline_core-1.3.1 → inline_core-1.3.12}/scripts/flux2_train_matrix.py +0 -0
  45. {inline_core-1.3.1 → inline_core-1.3.12}/scripts/minimax_h3_lora_check.py +0 -0
  46. {inline_core-1.3.1 → inline_core-1.3.12}/scripts/minimax_h3_train_matrix.py +0 -0
  47. {inline_core-1.3.1 → inline_core-1.3.12}/scripts/reference.py +0 -0
  48. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/__init__.py +0 -0
  49. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/__init__.py +0 -0
  50. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/characters/weights.py +0 -0
  51. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/components/__init__.py +0 -0
  52. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/components/conditioning.py +0 -0
  53. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/components/interfaces.py +0 -0
  54. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/config.py +0 -0
  55. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/__init__.py +0 -0
  56. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/auto.py +0 -0
  57. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/detect.py +0 -0
  58. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/memory.py +0 -0
  59. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/policy.py +0 -0
  60. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/probe.py +0 -0
  61. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/device/types.py +0 -0
  62. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/errors.py +0 -0
  63. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/__init__.py +0 -0
  64. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/api.py +0 -0
  65. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/constraints.py +0 -0
  66. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/fetch.py +0 -0
  67. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/handlers.py +0 -0
  68. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/importer.py +0 -0
  69. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/install.py +0 -0
  70. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/loader.py +0 -0
  71. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/manifest.py +0 -0
  72. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/models.py +0 -0
  73. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/paths.py +0 -0
  74. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/resolve.py +0 -0
  75. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/scanner.py +0 -0
  76. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/state.py +0 -0
  77. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/extensions/tools.py +0 -0
  78. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/ffmpeg.py +0 -0
  79. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/__init__.py +0 -0
  80. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/cache.py +0 -0
  81. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/descriptor.py +0 -0
  82. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/executor.py +0 -0
  83. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/loader_runners.py +0 -0
  84. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/primitives.py +0 -0
  85. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/registry.py +0 -0
  86. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/runners.py +0 -0
  87. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/schema.py +0 -0
  88. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/topo.py +0 -0
  89. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/graph/validate.py +0 -0
  90. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/media.py +0 -0
  91. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/__init__.py +0 -0
  92. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/catalog.py +0 -0
  93. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/character/__init__.py +0 -0
  94. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/checkpoint.py +0 -0
  95. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/controlspace.py +0 -0
  96. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/__init__.py +0 -0
  97. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/controlnet.py +0 -0
  98. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/embeds.py +0 -0
  99. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/provider.py +0 -0
  100. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/requirements.py +0 -0
  101. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/runner.py +0 -0
  102. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/flux2/variants.py +0 -0
  103. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/keymap.py +0 -0
  104. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/__init__.py +0 -0
  105. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/convert.py +0 -0
  106. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/depth_control.py +0 -0
  107. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/img2img.py +0 -0
  108. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/provider.py +0 -0
  109. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/requirements.py +0 -0
  110. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/krea2/runner.py +0 -0
  111. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/lora.py +0 -0
  112. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/__init__.py +0 -0
  113. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/lora_keys.py +0 -0
  114. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/memory.py +0 -0
  115. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/pipeline.py +0 -0
  116. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/provider.py +0 -0
  117. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/requirements.py +0 -0
  118. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/runner.py +0 -0
  119. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/__init__.py +0 -0
  120. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/__init__.py +0 -0
  121. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/allocator_trim_strategy.py +0 -0
  122. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/batch_split.py +0 -0
  123. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/__init__.py +0 -0
  124. {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
  125. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/builder.py +0 -0
  126. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/disk.py +0 -0
  127. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/pool.py +0 -0
  128. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/provider.py +0 -0
  129. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/source.py +0 -0
  130. {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
  131. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/utils.py +0 -0
  132. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/block_streaming/wrapper.py +0 -0
  133. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/__init__.py +0 -0
  134. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/audio_mux.py +0 -0
  135. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/hlg.py +0 -0
  136. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/primaries.py +0 -0
  137. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/color/yuv.py +0 -0
  138. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/__init__.py +0 -0
  139. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/diffusion_steps.py +0 -0
  140. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/guiders.py +0 -0
  141. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/noisers.py +0 -0
  142. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/patchifiers.py +0 -0
  143. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/protocols.py +0 -0
  144. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/components/schedulers.py +0 -0
  145. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/__init__.py +0 -0
  146. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/exceptions.py +0 -0
  147. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/item.py +0 -0
  148. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/mask_utils.py +0 -0
  149. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/conditioning/types/__init__.py +0 -0
  150. {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
  151. {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
  152. {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
  153. {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
  154. {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
  155. {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
  156. {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
  157. {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
  158. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/devices.py +0 -0
  159. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/duration_head/__init__.py +0 -0
  160. {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
  161. {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
  162. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/guidance/__init__.py +0 -0
  163. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/guidance/perturbations.py +0 -0
  164. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/hdr.py +0 -0
  165. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/__init__.py +0 -0
  166. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/attention_ops.py +0 -0
  167. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/fuse_loras.py +0 -0
  168. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/helpers.py +0 -0
  169. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/kernels.py +0 -0
  170. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/module_ops.py +0 -0
  171. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/primitives.py +0 -0
  172. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/registry.py +0 -0
  173. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/sd_ops.py +0 -0
  174. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/loader/sft_loader.py +0 -0
  175. {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
  176. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/modality_tiling.py +0 -0
  177. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/__init__.py +0 -0
  178. {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
  179. {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
  180. {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
  181. {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
  182. {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
  183. {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
  184. {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
  185. {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
  186. {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
  187. {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
  188. {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
  189. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/common/__init__.py +0 -0
  190. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/common/normalization.py +0 -0
  191. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/disposable.py +0 -0
  192. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/model_protocol.py +0 -0
  193. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/__init__.py +0 -0
  194. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/adaln.py +0 -0
  195. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/attention.py +0 -0
  196. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/compiling.py +0 -0
  197. {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
  198. {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
  199. {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
  200. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/modality.py +0 -0
  201. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/model.py +0 -0
  202. {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
  203. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/ops.py +0 -0
  204. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/rope.py +0 -0
  205. {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
  206. {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
  207. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/transformer/transformer.py +0 -0
  208. {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
  209. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/__init__.py +0 -0
  210. {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
  211. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/model/upsampler/model.py +0 -0
  212. {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
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {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
  223. {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
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {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
  237. {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
  238. {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
  239. {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
  240. {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
  241. {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
  242. {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
  243. {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
  244. {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
  245. {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
  246. {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
  247. {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
  248. {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
  249. {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
  250. {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
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/__init__.py +0 -0
  261. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/__init__.py +0 -0
  262. {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
  263. {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
  264. {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
  265. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/gemma/loader.py +0 -0
  266. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/sharded_sd.py +0 -0
  267. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/__init__.py +0 -0
  268. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/transformer/attention.py +0 -0
  269. {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
  270. {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
  271. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/multigpu/vae/__init__.py +0 -0
  272. {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
  273. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/__init__.py +0 -0
  274. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/blockwise/__init__.py +0 -0
  275. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/blockwise/_impl.py +0 -0
  276. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/fp8_cast.py +0 -0
  277. {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
  278. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/__init__.py +0 -0
  279. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/convert.py +0 -0
  280. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/fuse.py +0 -0
  281. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/linear.py +0 -0
  282. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/prequant.py +0 -0
  283. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/nvfp4/types.py +0 -0
  284. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/quantization/policy.py +0 -0
  285. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/text_encoders/__init__.py +0 -0
  286. {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
  287. {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
  288. {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
  289. {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
  290. {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
  291. {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
  292. {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
  293. {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
  294. {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
  295. {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
  296. {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
  297. {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
  298. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/tiling.py +0 -0
  299. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/tools.py +0 -0
  300. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/types.py +0 -0
  301. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_core/utils.py +0 -0
  302. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/__init__.py +0 -0
  303. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/a2vid_two_stage.py +0 -0
  304. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/dfr_layout.py +0 -0
  305. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/dfr_pipeline.py +0 -0
  306. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/distilled.py +0 -0
  307. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/distilled_mgpu.py +0 -0
  308. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/dubit.py +0 -0
  309. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/hdr_ic_lora.py +0 -0
  310. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ic_lora.py +0 -0
  311. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/iclora_utils.py +0 -0
  312. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/keyframe_interpolation.py +0 -0
  313. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/__init__.py +0 -0
  314. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/_broadcast.py +0 -0
  315. {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
  316. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/controller.py +0 -0
  317. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/delegating_builder.py +0 -0
  318. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/fleet.py +0 -0
  319. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/gemma_builders.py +0 -0
  320. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/nccl_groups.py +0 -0
  321. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/runner.py +0 -0
  322. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/sp_builder.py +0 -0
  323. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/tdp_builder.py +0 -0
  324. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/vae_builders.py +0 -0
  325. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/multigpu/weight_tracker.py +0 -0
  326. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/retake.py +0 -0
  327. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/t2a_one_stage.py +0 -0
  328. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_one_stage.py +0 -0
  329. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/ti2vid_two_stages.py +0 -0
  330. {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
  331. {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
  332. {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
  333. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/__init__.py +0 -0
  334. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/args.py +0 -0
  335. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/blocks.py +0 -0
  336. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/constants.py +0 -0
  337. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/denoisers.py +0 -0
  338. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/gpu_model.py +0 -0
  339. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/helpers.py +0 -0
  340. {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
  341. {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
  342. {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
  343. {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
  344. {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
  345. {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
  346. {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
  347. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/model_paths.py +0 -0
  348. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/quantization_factory.py +0 -0
  349. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/res2s.py +0 -0
  350. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/samplers.py +0 -0
  351. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/ltx25/vendor/ltx_pipelines/utils/types.py +0 -0
  352. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/__init__.py +0 -0
  353. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/adaln.py +0 -0
  354. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/keys.py +0 -0
  355. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/load.py +0 -0
  356. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/lora_keys.py +0 -0
  357. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/provider.py +0 -0
  358. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vae_keys.py +0 -0
  359. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/__init__.py +0 -0
  360. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/autoencoder_kl_minimax_h3.py +0 -0
  361. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/autoencoder_kl_minimax_h3_audio.py +0 -0
  362. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/before_denoise.py +0 -0
  363. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/before_encoder.py +0 -0
  364. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/decoders.py +0 -0
  365. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/denoise.py +0 -0
  366. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/encoders.py +0 -0
  367. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/modular_blocks_minimax_h3.py +0 -0
  368. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/modular_pipeline.py +0 -0
  369. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/packing.py +0 -0
  370. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/packing_ref2va.py +0 -0
  371. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/scheduling_minimax_h3.py +0 -0
  372. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/minimaxh3/vendor/transformer_minimax_h3.py +0 -0
  373. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/offload.py +0 -0
  374. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/prepared.py +0 -0
  375. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/preprocess/__init__.py +0 -0
  376. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/preprocess/requirements.py +0 -0
  377. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/preprocess/runner.py +0 -0
  378. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/references.py +0 -0
  379. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/registry_index.py +0 -0
  380. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/requirements.py +0 -0
  381. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/sampling.py +0 -0
  382. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/training/__init__.py +0 -0
  383. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/training/runner.py +0 -0
  384. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/video_params.py +0 -0
  385. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/__init__.py +0 -0
  386. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/primitives.py +0 -0
  387. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/provider.py +0 -0
  388. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/requirements.py +0 -0
  389. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/models/zimage/runner.py +0 -0
  390. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/__init__.py +0 -0
  391. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/config.py +0 -0
  392. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/group.py +0 -0
  393. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/launch.py +0 -0
  394. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/protocol.py +0 -0
  395. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/registry.py +0 -0
  396. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/parallel/worker.py +0 -0
  397. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/__init__.py +0 -0
  398. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/context.py +0 -0
  399. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/file_store.py +0 -0
  400. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/progress.py +0 -0
  401. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/run.py +0 -0
  402. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/store.py +0 -0
  403. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/runtime/video_encode.py +0 -0
  404. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/sampling/__init__.py +0 -0
  405. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/sampling/batch.py +0 -0
  406. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/__init__.py +0 -0
  407. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/__main__.py +0 -0
  408. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/app.py +0 -0
  409. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/assets.py +0 -0
  410. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/bootstrap.py +0 -0
  411. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/frontend.py +0 -0
  412. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/manager.py +0 -0
  413. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/rpc.py +0 -0
  414. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/run_store.py +0 -0
  415. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/serialize.py +0 -0
  416. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/server/version.py +0 -0
  417. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/__init__.py +0 -0
  418. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/activity.py +0 -0
  419. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/assets.py +0 -0
  420. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/config.py +0 -0
  421. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/dataset_import.py +0 -0
  422. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/fal.py +0 -0
  423. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/frames.py +0 -0
  424. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/graph_build.py +0 -0
  425. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/image_meta.py +0 -0
  426. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/moodboard.py +0 -0
  427. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/peaks.py +0 -0
  428. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/schema.py +0 -0
  429. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/store.py +0 -0
  430. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/system_stats.py +0 -0
  431. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/__init__.py +0 -0
  432. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/compose.py +0 -0
  433. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/ffmpeg.py +0 -0
  434. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/render.py +0 -0
  435. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/studio/timeline/resolve.py +0 -0
  436. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/takes.py +0 -0
  437. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/__init__.py +0 -0
  438. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/__main__.py +0 -0
  439. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/arch.py +0 -0
  440. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/cache.py +0 -0
  441. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/caption.py +0 -0
  442. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/dataset.py +0 -0
  443. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/h3.py +0 -0
  444. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/ltx25.py +0 -0
  445. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/models.py +0 -0
  446. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/precache_store.py +0 -0
  447. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/protocol.py +0 -0
  448. {inline_core-1.3.1 → inline_core-1.3.12}/src/inline_core/training/trainer.py +0 -0
  449. {inline_core-1.3.1 → inline_core-1.3.12}/tests/conftest.py +0 -0
  450. {inline_core-1.3.1 → inline_core-1.3.12}/tests/helpers.py +0 -0
  451. {inline_core-1.3.1 → inline_core-1.3.12}/tests/reference/lookalike_faces.json +0 -0
  452. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_cache.py +0 -0
  453. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_catalog.py +0 -0
  454. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_character_requirements.py +0 -0
  455. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_apply.py +0 -0
  456. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_library.py +0 -0
  457. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_characters_wiring.py +0 -0
  458. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_charfile.py +0 -0
  459. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_checkpoint.py +0 -0
  460. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_clip_grid_parity.py +0 -0
  461. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_config.py +0 -0
  462. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_dataset_import.py +0 -0
  463. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_device_detect.py +0 -0
  464. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_encoder_parking.py +0 -0
  465. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_executor.py +0 -0
  466. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_api.py +0 -0
  467. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_install.py +0 -0
  468. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_manifest.py +0 -0
  469. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_resolve.py +0 -0
  470. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_scanner.py +0 -0
  471. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_spine.py +0 -0
  472. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_extension_state.py +0 -0
  473. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_file_store.py +0 -0
  474. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_controlnet.py +0 -0
  475. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_folder.py +0 -0
  476. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_resolve.py +0 -0
  477. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_runner.py +0 -0
  478. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_training.py +0 -0
  479. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_flux2_variants.py +0 -0
  480. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_frontend_serving.py +0 -0
  481. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_hidden_nodes.py +0 -0
  482. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_keymap.py +0 -0
  483. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_convert.py +0 -0
  484. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_depth_control.py +0 -0
  485. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_requirements.py +0 -0
  486. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_krea2_runner.py +0 -0
  487. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_loader_runners.py +0 -0
  488. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_loaders.py +0 -0
  489. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_lora.py +0 -0
  490. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_lora_download.py +0 -0
  491. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_lora_keys.py +0 -0
  492. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_nodes.py +0 -0
  493. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_requirements.py +0 -0
  494. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_training.py +0 -0
  495. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_ltx25_wired_refs.py +0 -0
  496. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_manager_queue.py +0 -0
  497. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_memory_policy.py +0 -0
  498. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_adaln.py +0 -0
  499. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_keys.py +0 -0
  500. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_load.py +0 -0
  501. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_lora_keys.py +0 -0
  502. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_minimaxh3_training.py +0 -0
  503. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_model_registry_index.py +0 -0
  504. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_model_requirements.py +0 -0
  505. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_offload_prepared.py +0 -0
  506. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_output_kind_contract.py +0 -0
  507. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_parallel_group.py +0 -0
  508. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_pipeline_cache.py +0 -0
  509. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_precache_store.py +0 -0
  510. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_primitives.py +0 -0
  511. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_references.py +0 -0
  512. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_rpc_bridge.py +0 -0
  513. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_run_store.py +0 -0
  514. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_sampling.py +0 -0
  515. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_schema.py +0 -0
  516. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_server.py +0 -0
  517. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_staged_residency.py +0 -0
  518. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_activity.py +0 -0
  519. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_assets.py +0 -0
  520. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_fal.py +0 -0
  521. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_frames.py +0 -0
  522. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_generation.py +0 -0
  523. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_graph_build.py +0 -0
  524. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_models.py +0 -0
  525. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_moodboard.py +0 -0
  526. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_multi_reference.py +0 -0
  527. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_node_size.py +0 -0
  528. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_peaks.py +0 -0
  529. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_schema.py +0 -0
  530. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_store.py +0 -0
  531. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_studio_timeline.py +0 -0
  532. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_take_bytes.py +0 -0
  533. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_topo.py +0 -0
  534. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_arch.py +0 -0
  535. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_dataset.py +0 -0
  536. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_models.py +0 -0
  537. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_nodes.py +0 -0
  538. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_resolve.py +0 -0
  539. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_training_snapshots.py +0 -0
  540. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_validate.py +0 -0
  541. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_version_report.py +0 -0
  542. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_video_encode.py +0 -0
  543. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_video_params.py +0 -0
  544. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_webui_install.py +0 -0
  545. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_xfuser_sampler.py +0 -0
  546. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_zimage_primitives.py +0 -0
  547. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_zimage_resolve.py +0 -0
  548. {inline_core-1.3.1 → inline_core-1.3.12}/tests/test_zimage_runner.py +0 -0
  549. {inline_core-1.3.1 → inline_core-1.3.12}/webui.bat +0 -0
  550. {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.1
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); and **MiniMax H3**, which generates video and
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, and the LoRA trainer all run on real
93
- > hardware. Cross-request batching, single-image multi-GPU (an xDiT worker group behind the sampler
94
- > seam, with the policy and IPC round-trip tested), and out-of-process custom nodes are built as
95
- > seams but are not yet exercised on real hardware.
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 <- Z-Image
139
- krea2_turbo_bf16.safetensors <- Krea 2 Turbo (generate)
140
- krea2_raw_bf16.safetensors <- Krea 2 RAW (fine-tune)
141
- vae/ ae.safetensors <- Z-Image
142
- qwen_image_vae_diffusers.safetensors <- Krea 2
143
- text_encoders/ qwen_3_4b.safetensors <- Z-Image
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 is a clear, fast error, not a silent multi-GB fetch. Models arrive by exactly two
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 Turbo** or **Krea 2 RAW** node, wire a Prompt into it, and hit Run. The
182
- node hooks up the diffusion model, VAE, and text-encoder behind the scenes - no loader/sampler
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. This is not
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
- "just run" instead of making you tune profiles.
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 can't hold the model full-precision quantizes to int8 on its own - no need to know a flag.
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); and **MiniMax H3**, which generates video and
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, and the LoRA trainer all run on real
23
- > hardware. Cross-request batching, single-image multi-GPU (an xDiT worker group behind the sampler
24
- > seam, with the policy and IPC round-trip tested), and out-of-process custom nodes are built as
25
- > seams but are not yet exercised on real hardware.
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 <- Z-Image
69
- krea2_turbo_bf16.safetensors <- Krea 2 Turbo (generate)
70
- krea2_raw_bf16.safetensors <- Krea 2 RAW (fine-tune)
71
- vae/ ae.safetensors <- Z-Image
72
- qwen_image_vae_diffusers.safetensors <- Krea 2
73
- text_encoders/ qwen_3_4b.safetensors <- Z-Image
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 is a clear, fast error, not a silent multi-GB fetch. Models arrive by exactly two
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 Turbo** or **Krea 2 RAW** node, wire a Prompt into it, and hit Run. The
112
- node hooks up the diffusion model, VAE, and text-encoder behind the scenes - no loader/sampler
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. This is not
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
- "just run" instead of making you tune profiles.
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 can't hold the model full-precision quantizes to int8 on its own - no need to know a flag.
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).
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  # PyPI name; the import package is `inline_core` (src/inline_core).
3
3
  name = "inline-core"
4
- version = "1.3.1"
4
+ version = "1.3.12"
5
5
  description = "The generation engine behind Inline Studio."
6
6
  readme = "README.md"
7
7
  license = "GPL-3.0-or-later"
@@ -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 ordinal prompting resolves."""
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 = [str(first_position + i) for i in range(len(self.refs))]
52
- if len(positions) == 1:
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
- which = f"Images {', '.join(positions[:-1])} and {positions[-1]} show"
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(chosen: str, arch: str = encode.FLUX2_KLEIN_ARCH) -> AppliedCharacter | None:
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
- references = arch == encode.FLUX2_KLEIN_ARCH
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
- mode = doc.manifest.apply.get(arch) or ("lora" if lora else "reference")
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", encode.FLUX2_KLEIN_ARCH, path.name)
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
- parts = [str(ref.get("sha256", "")) for ref in manifest.refs]
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)