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.
Files changed (76) hide show
  1. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/PKG-INFO +1 -1
  2. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/_version.py +2 -2
  3. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/client.py +12 -17
  4. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/publish-dev.yml +0 -0
  5. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/publish.yml +0 -0
  6. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/style.yml +0 -0
  7. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.github/workflows/test.yml +0 -0
  8. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.gitignore +0 -0
  9. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/.pre-commit-config.yaml +0 -0
  10. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/LICENSE +0 -0
  11. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/README.md +0 -0
  12. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/docs/renderer-config.md +0 -0
  13. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/README.md +0 -0
  14. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/sglang/multiturn_generate_sglang.py +0 -0
  15. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/sglang/online_multiturn_sglang.py +0 -0
  16. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/tinker/multiturn_generate_tinker.py +0 -0
  17. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/transformers/multiturn_generate_transformers.py +0 -0
  18. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/examples/vllm/multiturn_generate_vllm.py +0 -0
  19. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/pyproject.toml +0 -0
  20. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/__init__.py +0 -0
  21. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/base.py +0 -0
  22. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/configs.py +0 -0
  23. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/deepseek_r1.py +0 -0
  24. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/deepseek_v3.py +0 -0
  25. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/default.py +0 -0
  26. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/glm45.py +0 -0
  27. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/glm5.py +0 -0
  28. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/gpt_oss.py +0 -0
  29. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/hy3.py +0 -0
  30. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/kimi_k2.py +0 -0
  31. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/kimi_k25.py +0 -0
  32. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/laguna_xs2.py +0 -0
  33. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/llama_3.py +0 -0
  34. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/minimax_m2.py +0 -0
  35. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/nemotron3.py +0 -0
  36. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/parsers.py +0 -0
  37. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/parsing.py +0 -0
  38. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/prime_qwen3.py +0 -0
  39. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen3.py +0 -0
  40. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen35.py +0 -0
  41. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen36.py +0 -0
  42. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/renderers/qwen3_vl.py +0 -0
  43. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/conftest.py +0 -0
  44. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_bridge.py +0 -0
  45. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_build_helpers.py +0 -0
  46. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_client.py +0 -0
  47. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_deepseek_r1.py +0 -0
  48. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_disabled_thinking_stability.py +0 -0
  49. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_glm_tool_name_validation.py +0 -0
  50. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_gpt_oss_harmony_parity.py +0 -0
  51. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_hy3.py +0 -0
  52. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_incremental.py +0 -0
  53. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_is_content.py +0 -0
  54. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_kimi_k25_tool_schema.py +0 -0
  55. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_laguna_xs21.py +0 -0
  56. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_llama_3.py +0 -0
  57. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_load_tokenizer.py +0 -0
  58. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_message_indices.py +0 -0
  59. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_message_tool_names.py +0 -0
  60. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_multimodal.py +0 -0
  61. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_nemotron3_parity.py +0 -0
  62. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_nemotron3_ultra.py +0 -0
  63. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_parse_response.py +0 -0
  64. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_parse_response_robustness.py +0 -0
  65. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_parsers.py +0 -0
  66. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_preserve_thinking.py +0 -0
  67. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_prime_qwen3_parity.py +0 -0
  68. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_qwen35_size_coverage.py +0 -0
  69. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_render_ids.py +0 -0
  70. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_renderer_config.py +0 -0
  71. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_renderer_config_parity.py +0 -0
  72. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_roundtrip.py +0 -0
  73. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_sampled_mask.py +0 -0
  74. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_tokens_per_message.py +0 -0
  75. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/tests/test_tool_arg_type_preservation.py +0 -0
  76. {renderers-0.1.9.dev9 → renderers-0.1.9.dev10}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: renderers
3
- Version: 0.1.9.dev9
3
+ Version: 0.1.9.dev10
4
4
  Summary: Chat template renderers — deterministic message-to-token conversion for LLM training
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE
@@ -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.dev9'
22
- __version_tuple__ = version_tuple = (0, 1, 9, 'dev9')
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 0.20's /inference/v1/generate.
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 0.20-specific
420
+ NOTE — future engine pluggability: this encoder is vLLM-specific
428
421
  (uses ``vllm.multimodal.inputs.MultiModalKwargsItems``,
429
- ``vllm.entrypoints.serve.disagg.mm_serde.encode_mm_kwargs_item``, and
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.serve.disagg.mm_serde import encode_mm_kwargs_item
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