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.
- {hugpy_engine-0.2.4/src/hugpy_engine.egg-info → hugpy_engine-0.2.5}/PKG-INFO +1 -1
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/catalog_bridge.py +8 -1
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/main.py +8 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/activity.py +7 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/dispatch.py +20 -3
- hugpy_engine-0.2.5/src/hugpy_engine/fit/__init__.py +28 -0
- hugpy_engine-0.2.5/src/hugpy_engine/fit/flex.py +689 -0
- hugpy_engine-0.2.5/src/hugpy_engine/fit/plan.py +587 -0
- hugpy_engine-0.2.5/src/hugpy_engine/fit/types.py +428 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/config.py +77 -6
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/get.py +41 -9
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/base_runner.py +53 -2
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/ccp_runner.py +15 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/python_runner.py +35 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/peft_adapters.py +9 -2
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/assure_model_key.py +81 -39
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/remote.py +513 -36
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/chat_schemas.py +7 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/event_schemas.py +10 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/load_failure.py +84 -1
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/overrides.py +59 -75
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/slot_agent.py +27 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/slots.py +169 -114
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/spill.py +62 -16
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5/src/hugpy_engine.egg-info}/PKG-INFO +1 -1
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/SOURCES.txt +17 -1
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/scm_file_list.json +16 -0
- hugpy_engine-0.2.5/src/hugpy_engine.egg-info/scm_version.json +8 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/conftest.py +18 -0
- hugpy_engine-0.2.5/tests/known_good/test_dependency_acquisition_contract.py +252 -0
- hugpy_engine-0.2.5/tests/known_good/test_key_equivalence_contract.py +99 -0
- hugpy_engine-0.2.5/tests/known_good/test_missing_dependency_contract.py +116 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_model_key_contract.py +114 -0
- hugpy_engine-0.2.5/tests/known_good/test_plan_fit_contract.py +762 -0
- hugpy_engine-0.2.5/tests/known_good/test_politeness_retired_contract.py +65 -0
- hugpy_engine-0.2.5/tests/known_good/test_prefill_progress_contract.py +99 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_relay_gate_allocation_contract.py +12 -7
- hugpy_engine-0.2.5/tests/known_good/test_relay_stream_stall_contract.py +279 -0
- hugpy_engine-0.2.5/tests/known_good/test_remote_error_structure_contract.py +133 -0
- hugpy_engine-0.2.5/tests/known_good/test_response_format_contract.py +104 -0
- hugpy_engine-0.2.5/tests/known_good/test_slot_seat_admission_contract.py +196 -0
- hugpy_engine-0.2.5/tests/known_good/test_slot_serialization_contract.py +159 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_central_cap_gating.py +21 -7
- hugpy_engine-0.2.5/tests/test_slot_agent_loading_state.py +75 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_spill_ctx_reserve.py +20 -12
- hugpy_engine-0.2.4/src/hugpy_engine.egg-info/scm_version.json +0 -8
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/LICENSE +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/README.md +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/docs/ALLOCATION-MODES.md +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/pyproject.toml +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/setup.cfg +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/alloc_modes.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/allocation.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/call_api.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/get_module.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/reclassify.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/reconcile.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/serve/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/serve/serve.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/serve/serve_cli.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/apis/systemd_units.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/backend.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/backends/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/backends/local.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/catalog.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/categories.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/chat_context.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/context_budget.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/chat_context/unbounded.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/model_meta.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/models_config.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/models_default.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/config/models/models_dict.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/contracts.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/dispatch/acquire.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/draft_models.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/engines.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/eviction.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/coder.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/generate/generate_runner.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/gguf_election.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/chat_runner.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/config.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/constants.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/init_imports.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/imports/utils.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/runners/src/shard_server.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/llama/serve.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/manifest.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_classifier.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/client.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/query_registry.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/repositories.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/model_index/service.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/name_match.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/build.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/fetch.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/native/resolve.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/output_repair.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/placement.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/py.typed +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/query.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/allocator.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/categories/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/categories/builders.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/categories/frameworks.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/device_placement.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/groups.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/model_dict_resolver.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/resolvers/model_resolver.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/routing_diagnostics.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/runtime.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/metadata_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/model_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/runner_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/schemas/task_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/chunksum_verify.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/hot_cache.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/model_cache.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/policy.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/profiles.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/serve.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/serve_cli.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/serve/supervisor.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/task_deps.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/tasks.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/utils/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/utils/json_scavenge.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/utils/no_think.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/__init__.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/chat_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/config_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/install_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/model_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/request_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine/wire/specs_schemas.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/dependency_links.txt +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/entry_points.txt +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/requires.txt +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/src/hugpy_engine.egg-info/top_level.txt +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_call_queue_contract.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_evict_fit_contract.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/known_good/test_model_format_contract.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_admission_gate_and_diagnostics.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_allocation_accuracy.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_budget_bar_spec.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_catalog_bridge.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chat_request_caller.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chat_role_alternation.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chat_tool_messages_schema.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_chunksum_verify.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_comms_foundations.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_ctx_fit.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_device_placement.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_engine_boundary.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_engine_persisted_resolve.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_eviction_flow.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_feasible_distribution_engine.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_gguf_election.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_gguf_sharded_effective.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_hot_cache.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_image_task_classification.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_import_policy.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_load_failure_reason.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_mmproj_effective_bytes.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_model_aliases.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_no_makeroom.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_no_think.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_peft_adapter_load.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_per_device_slot.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_per_request_alloc.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_placement_defaults.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_provision_failure_honesty.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_registry_attribution.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_registry_symmetry.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_resolve_routing_key_reconcile.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_runner_registry_heartbeat_starvation.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_load_stall_health.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_moe_vram_preflight.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_placement_projection.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_port_guard.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_slot_relaunch.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_spill_vision_fit.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_tasks_registry.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_tok_s_plausible_ceiling.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_transformers_placement.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_video_model_classification.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_vision_needs_slot.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_vram_cliff.py +0 -0
- {hugpy_engine-0.2.4 → hugpy_engine-0.2.5}/tests/test_worker_error_attribution.py +0 -0
- {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.
|
|
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
|
-
|
|
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
|
|
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
|
+
]
|