renderers 0.1.9.dev9__tar.gz → 0.1.9.dev10__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.
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/PKG-INFO +1 -1
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/_version.py +2 -2
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/client.py +12 -17
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/publish-dev.yml +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/publish.yml +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/style.yml +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/test.yml +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.gitignore +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.pre-commit-config.yaml +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/LICENSE +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/README.md +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/docs/renderer-config.md +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/README.md +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/sglang/multiturn_generate_sglang.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/sglang/online_multiturn_sglang.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/tinker/multiturn_generate_tinker.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/transformers/multiturn_generate_transformers.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/vllm/multiturn_generate_vllm.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/pyproject.toml +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/__init__.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/base.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/configs.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/deepseek_r1.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/deepseek_v3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/default.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/glm45.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/glm5.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/gpt_oss.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/hy3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/kimi_k2.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/kimi_k25.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/laguna_xs2.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/llama_3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/minimax_m2.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/nemotron3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/parsers.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/parsing.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/prime_qwen3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen35.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen36.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen3_vl.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/conftest.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_bridge.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_build_helpers.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_client.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_deepseek_r1.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_disabled_thinking_stability.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_glm_tool_name_validation.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_gpt_oss_harmony_parity.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_hy3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_incremental.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_is_content.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_kimi_k25_tool_schema.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_laguna_xs21.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_llama_3.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_load_tokenizer.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_message_indices.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_message_tool_names.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_multimodal.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_nemotron3_parity.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_nemotron3_ultra.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_parse_response.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_parse_response_robustness.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_parsers.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_preserve_thinking.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_prime_qwen3_parity.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_qwen35_size_coverage.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_render_ids.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_renderer_config.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_renderer_config_parity.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_roundtrip.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_sampled_mask.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_tokens_per_message.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_tool_arg_type_preservation.py +0 -0
- {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/uv.lock +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.1.9.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, 9, '
|
|
21
|
+
__version__ = version = '0.1.9.dev10'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 9, 'dev10')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Renderer-based generate client for vLLM
|
|
1
|
+
"""Renderer-based generate client for vLLM's /inference/v1/generate.
|
|
2
2
|
|
|
3
3
|
messages → Renderer.render_ids() → token IDs → POST /inference/v1/generate
|
|
4
4
|
→ completion tokens → Renderer.parse_response() → structured message
|
|
@@ -58,8 +58,7 @@ class OverlongPromptError(Exception):
|
|
|
58
58
|
self.prompt_len = prompt_len
|
|
59
59
|
self.max_prompt_len = max_prompt_len
|
|
60
60
|
super().__init__(
|
|
61
|
-
f"Prompt length ({prompt_len}) exceeds maximum "
|
|
62
|
-
f"context length ({max_prompt_len})."
|
|
61
|
+
f"Prompt length ({prompt_len}) exceeds maximum context length ({max_prompt_len})."
|
|
63
62
|
)
|
|
64
63
|
|
|
65
64
|
|
|
@@ -187,32 +186,26 @@ def _parse_completion_logprobs(
|
|
|
187
186
|
expected_token = f"token_id:{completion_ids[index]}"
|
|
188
187
|
if entry.get("token") != expected_token:
|
|
189
188
|
raise MalformedGenerateResponseError(
|
|
190
|
-
"Engine response "
|
|
191
|
-
f"choice.logprobs.content[{index}].token must be {expected_token!r}."
|
|
189
|
+
f"Engine response choice.logprobs.content[{index}].token must be {expected_token!r}."
|
|
192
190
|
)
|
|
193
191
|
raw_logprob = entry.get("logprob")
|
|
194
192
|
if isinstance(raw_logprob, bool) or not isinstance(raw_logprob, (int, float)):
|
|
195
193
|
raise MalformedGenerateResponseError(
|
|
196
|
-
"Engine response "
|
|
197
|
-
f"choice.logprobs.content[{index}].logprob must be a number."
|
|
194
|
+
f"Engine response choice.logprobs.content[{index}].logprob must be a number."
|
|
198
195
|
)
|
|
199
196
|
try:
|
|
200
197
|
logprob = float(raw_logprob)
|
|
201
198
|
except OverflowError as exc:
|
|
202
199
|
raise MalformedGenerateResponseError(
|
|
203
|
-
"Engine response "
|
|
204
|
-
f"choice.logprobs.content[{index}].logprob must be finite."
|
|
200
|
+
f"Engine response choice.logprobs.content[{index}].logprob must be finite."
|
|
205
201
|
) from exc
|
|
206
202
|
if not math.isfinite(logprob):
|
|
207
203
|
raise MalformedGenerateResponseError(
|
|
208
|
-
"Engine response "
|
|
209
|
-
f"choice.logprobs.content[{index}].logprob must be finite."
|
|
204
|
+
f"Engine response choice.logprobs.content[{index}].logprob must be finite."
|
|
210
205
|
)
|
|
211
206
|
if logprob == VLLM_LOGPROB_SENTINEL:
|
|
212
207
|
raise MalformedGenerateResponseError(
|
|
213
|
-
"Engine response "
|
|
214
|
-
f"choice.logprobs.content[{index}].logprob does not contain "
|
|
215
|
-
"sampling evidence."
|
|
208
|
+
f"Engine response choice.logprobs.content[{index}].logprob does not contain sampling evidence."
|
|
216
209
|
)
|
|
217
210
|
completion_logprobs.append(logprob)
|
|
218
211
|
return completion_logprobs
|
|
@@ -424,9 +417,9 @@ def _build_mm_features(
|
|
|
424
417
|
model-family specific. For now we dispatch on the renderer class;
|
|
425
418
|
extend the dispatch table as more multimodal renderers land.
|
|
426
419
|
|
|
427
|
-
NOTE — future engine pluggability: this encoder is vLLM
|
|
420
|
+
NOTE — future engine pluggability: this encoder is vLLM-specific
|
|
428
421
|
(uses ``vllm.multimodal.inputs.MultiModalKwargsItems``,
|
|
429
|
-
``vllm.entrypoints.
|
|
422
|
+
``vllm.entrypoints.scale_out.token_in_token_out.mm_serde.encode_mm_kwargs_item``, and
|
|
430
423
|
``_create_qwen2vl_field_factory``). When a second inference engine
|
|
431
424
|
arrives (SGLang, MAX, ...) the renderer client should be parameterized
|
|
432
425
|
on engine: either (a) move the encoder onto the renderer as
|
|
@@ -473,7 +466,9 @@ def _build_qwen_vl_features(
|
|
|
473
466
|
try:
|
|
474
467
|
import torch
|
|
475
468
|
from transformers.feature_extraction_utils import BatchFeature
|
|
476
|
-
from vllm.entrypoints.
|
|
469
|
+
from vllm.entrypoints.scale_out.token_in_token_out.mm_serde import (
|
|
470
|
+
encode_mm_kwargs_item,
|
|
471
|
+
)
|
|
477
472
|
from vllm.model_executor.models.qwen2_vl import _create_qwen2vl_field_factory
|
|
478
473
|
from vllm.multimodal.inputs import MultiModalKwargsItems
|
|
479
474
|
except ImportError as exc:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|