hugpy-engine 0.2.4__tar.gz → 0.2.5__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 (207) hide show
  1. {hugpy_engine-0.2.4/src/hugpy_engine.egg-info → hugpy_engine-0.2.5}/PKG-INFO +1 -1
  2. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/catalog_bridge.py +8 -1
  3. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/main.py +8 -0
  4. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/activity.py +7 -0
  5. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/dispatch.py +20 -3
  6. hugpy_engine-0.2.5/src/hugpy_engine/fit/__init__.py +28 -0
  7. hugpy_engine-0.2.5/src/hugpy_engine/fit/flex.py +689 -0
  8. hugpy_engine-0.2.5/src/hugpy_engine/fit/plan.py +587 -0
  9. hugpy_engine-0.2.5/src/hugpy_engine/fit/types.py +428 -0
  10. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/config.py +77 -6
  11. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/get.py +41 -9
  12. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/base_runner.py +53 -2
  13. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/ccp_runner.py +15 -0
  14. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/python_runner.py +35 -0
  15. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/peft_adapters.py +9 -2
  16. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/assure_model_key.py +81 -39
  17. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/remote.py +513 -36
  18. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/chat_schemas.py +7 -0
  19. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/event_schemas.py +10 -0
  20. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/load_failure.py +84 -1
  21. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/overrides.py +59 -75
  22. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/slot_agent.py +27 -0
  23. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/slots.py +169 -114
  24. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/spill.py +62 -16
  25. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5/src/hugpy_engine.egg-info}/PKG-INFO +1 -1
  26. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/SOURCES.txt +17 -1
  27. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/scm_file_list.json +16 -0
  28. hugpy_engine-0.2.5/src/hugpy_engine.egg-info/scm_version.json +8 -0
  29. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/conftest.py +18 -0
  30. hugpy_engine-0.2.5/tests/known_good/test_dependency_acquisition_contract.py +252 -0
  31. hugpy_engine-0.2.5/tests/known_good/test_key_equivalence_contract.py +99 -0
  32. hugpy_engine-0.2.5/tests/known_good/test_missing_dependency_contract.py +116 -0
  33. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_model_key_contract.py +114 -0
  34. hugpy_engine-0.2.5/tests/known_good/test_plan_fit_contract.py +762 -0
  35. hugpy_engine-0.2.5/tests/known_good/test_politeness_retired_contract.py +65 -0
  36. hugpy_engine-0.2.5/tests/known_good/test_prefill_progress_contract.py +99 -0
  37. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_relay_gate_allocation_contract.py +12 -7
  38. hugpy_engine-0.2.5/tests/known_good/test_relay_stream_stall_contract.py +279 -0
  39. hugpy_engine-0.2.5/tests/known_good/test_remote_error_structure_contract.py +133 -0
  40. hugpy_engine-0.2.5/tests/known_good/test_response_format_contract.py +104 -0
  41. hugpy_engine-0.2.5/tests/known_good/test_slot_seat_admission_contract.py +196 -0
  42. hugpy_engine-0.2.5/tests/known_good/test_slot_serialization_contract.py +159 -0
  43. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_central_cap_gating.py +21 -7
  44. hugpy_engine-0.2.5/tests/test_slot_agent_loading_state.py +75 -0
  45. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_spill_ctx_reserve.py +20 -12
  46. hugpy_engine-0.2.4/src/hugpy_engine.egg-info/scm_version.json +0 -8
  47. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/LICENSE +0 -0
  48. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/README.md +0 -0
  49. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/docs/ALLOCATION-MODES.md +0 -0
  50. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/pyproject.toml +0 -0
  51. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/setup.cfg +0 -0
  52. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/__init__.py +0 -0
  53. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/alloc_modes.py +0 -0
  54. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/allocation.py +0 -0
  55. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/__init__.py +0 -0
  56. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/call_api.py +0 -0
  57. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/get_module.py +0 -0
  58. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/reclassify.py +0 -0
  59. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/reconcile.py +0 -0
  60. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/serve/__init__.py +0 -0
  61. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/serve/serve.py +0 -0
  62. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/serve/serve_cli.py +0 -0
  63. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/systemd_units.py +0 -0
  64. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/backend.py +0 -0
  65. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/backends/__init__.py +0 -0
  66. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/backends/local.py +0 -0
  67. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/catalog.py +0 -0
  68. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/categories.py +0 -0
  69. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/__init__.py +0 -0
  70. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/chat_context.py +0 -0
  71. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/context_budget.py +0 -0
  72. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/unbounded.py +0 -0
  73. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/__init__.py +0 -0
  74. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/__init__.py +0 -0
  75. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/model_meta.py +0 -0
  76. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/models_config.py +0 -0
  77. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/models_default.py +0 -0
  78. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/models_dict.py +0 -0
  79. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/contracts.py +0 -0
  80. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/__init__.py +0 -0
  81. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/acquire.py +0 -0
  82. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/draft_models.py +0 -0
  83. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/engines.py +0 -0
  84. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/eviction.py +0 -0
  85. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/__init__.py +0 -0
  86. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/coder.py +0 -0
  87. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/generate_runner.py +0 -0
  88. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/gguf_election.py +0 -0
  89. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/__init__.py +0 -0
  90. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/__init__.py +0 -0
  91. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/chat_runner.py +0 -0
  92. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/__init__.py +0 -0
  93. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/__init__.py +0 -0
  94. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/config.py +0 -0
  95. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/constants.py +0 -0
  96. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/init_imports.py +0 -0
  97. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/utils.py +0 -0
  98. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/shard_server.py +0 -0
  99. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/serve.py +0 -0
  100. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/manifest.py +0 -0
  101. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_classifier.py +0 -0
  102. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/__init__.py +0 -0
  103. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/client.py +0 -0
  104. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/query_registry.py +0 -0
  105. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/repositories.py +0 -0
  106. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/service.py +0 -0
  107. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/name_match.py +0 -0
  108. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/__init__.py +0 -0
  109. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/build.py +0 -0
  110. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/fetch.py +0 -0
  111. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/resolve.py +0 -0
  112. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/output_repair.py +0 -0
  113. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/placement.py +0 -0
  114. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/py.typed +0 -0
  115. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/query.py +0 -0
  116. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/__init__.py +0 -0
  117. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/allocator.py +0 -0
  118. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/categories/__init__.py +0 -0
  119. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/categories/builders.py +0 -0
  120. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/categories/frameworks.py +0 -0
  121. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/device_placement.py +0 -0
  122. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/groups.py +0 -0
  123. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/model_dict_resolver.py +0 -0
  124. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/model_resolver.py +0 -0
  125. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/routing_diagnostics.py +0 -0
  126. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/runtime.py +0 -0
  127. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/__init__.py +0 -0
  128. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/metadata_schemas.py +0 -0
  129. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/model_schemas.py +0 -0
  130. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/runner_schemas.py +0 -0
  131. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/task_schemas.py +0 -0
  132. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/__init__.py +0 -0
  133. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/chunksum_verify.py +0 -0
  134. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/hot_cache.py +0 -0
  135. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/model_cache.py +0 -0
  136. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/policy.py +0 -0
  137. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/profiles.py +0 -0
  138. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/serve.py +0 -0
  139. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/serve_cli.py +0 -0
  140. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/supervisor.py +0 -0
  141. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/task_deps.py +0 -0
  142. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/tasks.py +0 -0
  143. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/utils/__init__.py +0 -0
  144. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/utils/json_scavenge.py +0 -0
  145. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/utils/no_think.py +0 -0
  146. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/__init__.py +0 -0
  147. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/chat_schemas.py +0 -0
  148. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/config_schemas.py +0 -0
  149. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/install_schemas.py +0 -0
  150. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/model_schemas.py +0 -0
  151. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/request_schemas.py +0 -0
  152. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/specs_schemas.py +0 -0
  153. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/dependency_links.txt +0 -0
  154. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/entry_points.txt +0 -0
  155. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/requires.txt +0 -0
  156. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/top_level.txt +0 -0
  157. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_call_queue_contract.py +0 -0
  158. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_evict_fit_contract.py +0 -0
  159. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_model_format_contract.py +0 -0
  160. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_admission_gate_and_diagnostics.py +0 -0
  161. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_allocation_accuracy.py +0 -0
  162. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_budget_bar_spec.py +0 -0
  163. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_catalog_bridge.py +0 -0
  164. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chat_request_caller.py +0 -0
  165. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chat_role_alternation.py +0 -0
  166. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chat_tool_messages_schema.py +0 -0
  167. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chunksum_verify.py +0 -0
  168. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_comms_foundations.py +0 -0
  169. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_ctx_fit.py +0 -0
  170. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_device_placement.py +0 -0
  171. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_engine_boundary.py +0 -0
  172. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_engine_persisted_resolve.py +0 -0
  173. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_eviction_flow.py +0 -0
  174. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_feasible_distribution_engine.py +0 -0
  175. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_gguf_election.py +0 -0
  176. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_gguf_sharded_effective.py +0 -0
  177. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_hot_cache.py +0 -0
  178. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_image_task_classification.py +0 -0
  179. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_import_policy.py +0 -0
  180. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_load_failure_reason.py +0 -0
  181. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_mmproj_effective_bytes.py +0 -0
  182. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_model_aliases.py +0 -0
  183. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_no_makeroom.py +0 -0
  184. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_no_think.py +0 -0
  185. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_peft_adapter_load.py +0 -0
  186. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_per_device_slot.py +0 -0
  187. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_per_request_alloc.py +0 -0
  188. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_placement_defaults.py +0 -0
  189. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_provision_failure_honesty.py +0 -0
  190. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_registry_attribution.py +0 -0
  191. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_registry_symmetry.py +0 -0
  192. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_resolve_routing_key_reconcile.py +0 -0
  193. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_runner_registry_heartbeat_starvation.py +0 -0
  194. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_load_stall_health.py +0 -0
  195. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_moe_vram_preflight.py +0 -0
  196. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_placement_projection.py +0 -0
  197. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_port_guard.py +0 -0
  198. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_relaunch.py +0 -0
  199. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_spill_vision_fit.py +0 -0
  200. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_tasks_registry.py +0 -0
  201. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_tok_s_plausible_ceiling.py +0 -0
  202. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_transformers_placement.py +0 -0
  203. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_video_model_classification.py +0 -0
  204. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_vision_needs_slot.py +0 -0
  205. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_vram_cliff.py +0 -0
  206. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_worker_error_attribution.py +0 -0
  207. {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_worker_serve_path_central_only.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hugpy-engine
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Hugpy engine: model discovery and classification, allocation and eviction, native llama.cpp and GGUF runners, and the prompt-to-reply inference path with task and placement seams
5
5
  Author-email: putkoff <support@hugpy.ai>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -52,7 +52,14 @@ class EngineCatalogSource:
52
52
  def canonical_key(self, model_key: str) -> Optional[str]:
53
53
  from hugpy_engine.resolvers.assure_model_key import assure_model_key
54
54
 
55
- return assure_model_key(model_key)
55
+ # IDENTITY resolution only (operator rule 2026-09-29): this is the
56
+ # storage/provision seam a WORKER uses to re-resolve a key central
57
+ # already resolved (ensure_model_registered -> _assure_local_key). The
58
+ # shorthand fuzzy tier must never answer here — on ae it turned
59
+ # ``Qwen3.8-9B-GGUF`` into the resident ``Qwen3.8-9B-Distill-GGUF``
60
+ # (same file, different model) and served it (S3/F7). None means
61
+ # "learn the row from central", never "use the nearest sibling".
62
+ return assure_model_key(model_key, fuzzy=False)
56
63
 
57
64
  def resolve_dir(self, model_key: str) -> Optional[str]:
58
65
  from hugpy_engine.config.main import get_model_path
@@ -50,6 +50,14 @@ def _resolve_model_key(model_key, registry, prefer=None):
50
50
  def _bare(k): # name without the "owner~" qualifier
51
51
  return k.split("~", 1)[1] if "~" in k else k
52
52
  candidates = sorted(k for k in registry if _bare(k) == model_key)
53
+ if not candidates:
54
+ # FORMAT EQUIVALENCE (operator rule 2026-09-29): ``X`` and ``X-GGUF``
55
+ # are one key, so either spelling resolves to the row on record under
56
+ # the other. Nothing else is folded — ``X-Distill-GGUF`` is a different
57
+ # model and never answers for ``X-GGUF`` (S3/F7). Lazy import keeps the
58
+ # config module's import graph unchanged.
59
+ from hugpy_engine.fit.types import key_equivalent
60
+ candidates = sorted(k for k in registry if key_equivalent(_bare(k), model_key))
53
61
  if not candidates:
54
62
  return None
55
63
  if len(candidates) == 1:
@@ -95,6 +95,13 @@ def snapshot() -> list:
95
95
  "kind": d["kind"],
96
96
  "prompt": d.get("prompt") or "",
97
97
  "state": state,
98
+ # WHERE a processing call is (2026-09-29): "prefill" while the
99
+ # engine is still reading the prompt (n_past/n_prompt ride on
100
+ # progress/input_tokens), "" once tokens flow. Without this the
101
+ # queue read "answering, 0 tokens" for a 105 s legitimate prefill.
102
+ "stage": d.get("stage") or "",
103
+ "progress": d.get("progress"),
104
+ "input_tokens": d.get("input_tokens"),
98
105
  "elapsed": d["elapsed"],
99
106
  "wait": d["wait"],
100
107
  "tokens": d["tokens"],
@@ -697,7 +697,25 @@ async def stream_runner(runner, req, cancel_event=None):
697
697
  timings=getattr(result, "timings", None))
698
698
  else:
699
699
  yield ErrorEvent(request_id=req.request_id,
700
- message=getattr(result, "error", None) or "run failed")
700
+ message=getattr(result, "error", None) or "run failed",
701
+ load_failure=(getattr(result, "load_failure", None)
702
+ if isinstance(getattr(result, "load_failure", None), dict)
703
+ else None))
704
+
705
+
706
+ def _rewrap_error_event(event, rid):
707
+ """The ONE re-wrap of an inner ErrorEvent under the outer request id
708
+ (S5, 2026-09-29). It used to rebuild the event from ``message`` alone, so
709
+ the worker's structured ``load_failure`` (class + fit_failure + refusal —
710
+ F3) and ``code`` were dropped HERE, on central, between the relay and the
711
+ /v1 envelope: the client saw ``type: api_error`` with no ``fit_failure``
712
+ although the worker had logged kind=vram_fit. Carry both."""
713
+ return ErrorEvent(request_id=rid,
714
+ message=getattr(event, "message", None) or "run failed",
715
+ load_failure=(getattr(event, "load_failure", None)
716
+ if isinstance(getattr(event, "load_failure", None), dict)
717
+ else None),
718
+ code=(str(getattr(event, "code")) if getattr(event, "code", None) else None))
701
719
 
702
720
 
703
721
  async def execute_prompt_stream(*args, cancel_event=None, **kwargs):
@@ -948,8 +966,7 @@ async def execute_chat_stream(*args, cancel_event=None, **kwargs):
948
966
  output_chunks=1, finish_reason="stop",
949
967
  usage=usage_totals, timings=timings_last)
950
968
  else:
951
- yield ErrorEvent(request_id=rid,
952
- message=getattr(event, "message", None) or "run failed")
969
+ yield _rewrap_error_event(event, rid)
953
970
  errored = True
954
971
  break
955
972
  else:
@@ -0,0 +1,28 @@
1
+ """``hugpy_engine.fit`` — the pure, deterministic evict-to-fit core.
2
+
3
+ Standalone: imports only ``hugpy_engine`` siblings (``eviction``, ``spill``)
4
+ and the standard library — no torch, no nvml, no fleet. See ``plan.py``.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ from hugpy_engine.fit.flex import ( # noqa: F401
9
+ FlexPlan, PartialPlan, band_bounds, band_ceiling, band_floor,
10
+ ctx_band_bounds, flex_priority_key, kv_at_ctx_pct, leniency_floor_pct,
11
+ plan_explicit_offload, plan_flex, plan_partial_offload,
12
+ )
13
+ from hugpy_engine.fit.plan import evict_order, need_split, plan_fit # noqa: F401
14
+ from hugpy_engine.fit.types import ( # noqa: F401
15
+ FAILURE_KINDS, DeviceVram, Eviction, FitFailure, FitPlan, FitPolicy,
16
+ FitRequest, MoeSplit, Resident, ResourceSnapshot, VramSnapshot,
17
+ canonical_key, key_equivalent,
18
+ )
19
+
20
+ __all__ = [
21
+ "plan_fit", "evict_order", "need_split",
22
+ "ResourceSnapshot", "VramSnapshot", "DeviceVram", "FitPolicy", "Resident",
23
+ "FitRequest", "Eviction", "MoeSplit", "FitFailure", "FAILURE_KINDS", "FitPlan",
24
+ "canonical_key", "key_equivalent",
25
+ "FlexPlan", "PartialPlan", "band_bounds", "band_ceiling", "band_floor",
26
+ "ctx_band_bounds", "flex_priority_key", "kv_at_ctx_pct", "leniency_floor_pct",
27
+ "plan_explicit_offload", "plan_flex", "plan_partial_offload",
28
+ ]