renderers 0.1.12.dev2__tar.gz → 0.1.12.dev3__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.12.dev2 → renderers-0.1.12.dev3}/PKG-INFO +1 -1
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/_version.py +2 -2
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/client.py +1 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_client.py +19 -1
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/.github/workflows/publish-dev.yml +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/.github/workflows/publish.yml +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/.github/workflows/style.yml +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/.github/workflows/test.yml +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/.gitignore +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/.pre-commit-config.yaml +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/LICENSE +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/README.md +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/docs/renderer-config.md +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/README.md +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/sglang/multiturn_generate_sglang.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/sglang/online_multiturn_sglang.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/tinker/multiturn_generate_tinker.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/transformers/multiturn_generate_transformers.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/vllm/multiturn_generate_vllm.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/pyproject.toml +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/__init__.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/base.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/configs.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/deepseek_r1.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/deepseek_v3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/deepseek_v4.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/default.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/gemma4.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/glm45.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/glm5.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/gpt_oss.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/hy3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/inkling.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/kimi_k2.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/kimi_k25.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/laguna_s21.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/laguna_xs2.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/llama_3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/minimax_m2.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/nemotron3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/parsers.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/parsing.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/prime_qwen3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/qwen3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/qwen35.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/qwen36.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/qwen38.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/renderers/qwen3_vl.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/conftest.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/parity.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/reference_rendering.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_bridge.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_build_helpers.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_deepseek_r1.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_deepseek_v4.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_disabled_thinking_stability.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_gemma4.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_glm_tool_name_validation.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_hy3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_incremental.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_inkling.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_is_content.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_kimi_k25_tool_schema.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_laguna_m1.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_laguna_xs21.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_llama_3.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_load_tokenizer.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_message_indices.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_message_tool_names.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_multimodal.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_nemotron3_ultra.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_offsetless_tokenizers.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_parity.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_parse_response.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_parse_response_robustness.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_parsers.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_preserve_thinking.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_qwen35_size_coverage.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_qwen38.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_renderer_config.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_roundtrip.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_sampled_mask.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_tokens_per_message.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/tests/test_tool_arg_type_preservation.py +0 -0
- {renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/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.12.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, 12, '
|
|
21
|
+
__version__ = version = '0.1.12.dev3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 12, 'dev3')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -391,6 +391,7 @@ async def generate(
|
|
|
391
391
|
|
|
392
392
|
return {
|
|
393
393
|
"request_id": data.get("request_id") or "",
|
|
394
|
+
"usage": data.get("usage"),
|
|
394
395
|
"prompt_ids": list(effective_prompt_ids or prompt_ids),
|
|
395
396
|
"renderer_prompt_ids": list(prompt_ids) if content_parts else None,
|
|
396
397
|
"mm_placeholders": mm_placeholders,
|
|
@@ -68,6 +68,7 @@ class _FakeClient:
|
|
|
68
68
|
def __init__(self):
|
|
69
69
|
self.calls = []
|
|
70
70
|
self.base_url = "http://fake-host:8000/v1"
|
|
71
|
+
self.usage = None
|
|
71
72
|
routed_experts = np.array([[[1]], [[2]]], dtype=np.uint8)
|
|
72
73
|
self.choice = {
|
|
73
74
|
"index": 0,
|
|
@@ -93,6 +94,8 @@ class _FakeClient:
|
|
|
93
94
|
"request_id": "gen-test",
|
|
94
95
|
"choices": [self.choice],
|
|
95
96
|
}
|
|
97
|
+
if self.usage is not None:
|
|
98
|
+
payload["usage"] = self.usage
|
|
96
99
|
if body and body.get("content_parts"):
|
|
97
100
|
payload["prompt_token_ids"] = [1, 2, 2, 3]
|
|
98
101
|
payload["mm_placeholders"] = {"image": [{"offset": 1, "length": 2}]}
|
|
@@ -114,8 +117,22 @@ def _run_generate(client, renderer=None):
|
|
|
114
117
|
)
|
|
115
118
|
|
|
116
119
|
|
|
117
|
-
|
|
120
|
+
@pytest.mark.parametrize(
|
|
121
|
+
"usage",
|
|
122
|
+
[
|
|
123
|
+
None,
|
|
124
|
+
{
|
|
125
|
+
"prompt_tokens": 3,
|
|
126
|
+
"completion_tokens": 2,
|
|
127
|
+
"total_tokens": 5,
|
|
128
|
+
"prompt_tokens_details": {"cached_tokens": 2},
|
|
129
|
+
"completion_tokens_details": {"reasoning_tokens": 1},
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
)
|
|
133
|
+
def test_generate_builds_request_body_and_parses_response(usage):
|
|
118
134
|
client = _FakeClient()
|
|
135
|
+
client.usage = usage
|
|
119
136
|
renderer = _FakeRenderer()
|
|
120
137
|
|
|
121
138
|
result = asyncio.run(
|
|
@@ -167,6 +184,7 @@ def test_generate_builds_request_body_and_parses_response():
|
|
|
167
184
|
assert result["routed_experts"]["data"].tobytes() == base64.b64encode(b"\x01\x02")
|
|
168
185
|
assert result["multi_modal_data"] is None
|
|
169
186
|
assert result["request_id"] == "gen-test"
|
|
187
|
+
assert result["usage"] == usage
|
|
170
188
|
# Per-token attribution from the renderer surfaces on the result so
|
|
171
189
|
# downstream consumers (verifiers RendererClient → prime-rl) can
|
|
172
190
|
# build selective loss masks without a second render pass.
|
|
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
|
{renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/sglang/multiturn_generate_sglang.py
RENAMED
|
File without changes
|
|
File without changes
|
{renderers-0.1.12.dev2 → renderers-0.1.12.dev3}/examples/tinker/multiturn_generate_tinker.py
RENAMED
|
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
|