renderers 0.1.13.dev15__tar.gz → 0.1.13.dev16__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 (99) hide show
  1. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/PKG-INFO +1 -1
  2. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/__init__.py +16 -9
  3. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/_version.py +2 -2
  4. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/.github/workflows/publish-dev.yml +0 -0
  5. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/.github/workflows/publish.yml +0 -0
  6. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/.github/workflows/style.yml +0 -0
  7. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/.github/workflows/test.yml +0 -0
  8. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/.gitignore +0 -0
  9. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/.pre-commit-config.yaml +0 -0
  10. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/LICENSE +0 -0
  11. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/README.md +0 -0
  12. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/docs/renderer-config.md +0 -0
  13. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/examples/README.md +0 -0
  14. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/examples/sglang/multiturn_generate_sglang.py +0 -0
  15. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/examples/sglang/online_multiturn_sglang.py +0 -0
  16. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/examples/tinker/multiturn_generate_tinker.py +0 -0
  17. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/examples/transformers/multiturn_generate_transformers.py +0 -0
  18. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/examples/vllm/multiturn_generate_vllm.py +0 -0
  19. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/pyproject.toml +0 -0
  20. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/base.py +0 -0
  21. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/client.py +0 -0
  22. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/configs.py +0 -0
  23. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/custom.py +0 -0
  24. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/deepseek_r1.py +0 -0
  25. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/deepseek_v3.py +0 -0
  26. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/deepseek_v4.py +0 -0
  27. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/default.py +0 -0
  28. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/gemma4.py +0 -0
  29. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/glm45.py +0 -0
  30. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/glm5.py +0 -0
  31. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/gpt_oss.py +0 -0
  32. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/hy3.py +0 -0
  33. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/inkling.py +0 -0
  34. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/kimi_k2.py +0 -0
  35. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/kimi_k25.py +0 -0
  36. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/laguna_s21.py +0 -0
  37. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/laguna_xs2.py +0 -0
  38. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/llama_3.py +0 -0
  39. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/minimax_m2.py +0 -0
  40. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/muse_glimmer.py +0 -0
  41. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/nemotron3.py +0 -0
  42. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/parsers.py +0 -0
  43. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/parsing.py +0 -0
  44. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/prime_qwen3.py +0 -0
  45. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/qwen3.py +0 -0
  46. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/qwen35.py +0 -0
  47. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/qwen36.py +0 -0
  48. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/qwen38.py +0 -0
  49. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/qwen3_vl.py +0 -0
  50. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/reasoning.py +0 -0
  51. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/renderers/tagged.py +0 -0
  52. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/audit_prefix_stability.py +0 -0
  53. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/conftest.py +0 -0
  54. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/fixtures/prefix_stability.json +0 -0
  55. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/parity.py +0 -0
  56. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/reference_continuations.py +0 -0
  57. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/reference_rendering.py +0 -0
  58. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/replay.py +0 -0
  59. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_bridge.py +0 -0
  60. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_build_helpers.py +0 -0
  61. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_client.py +0 -0
  62. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_custom.py +0 -0
  63. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_deepseek_r1.py +0 -0
  64. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_deepseek_v4.py +0 -0
  65. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_disabled_thinking_stability.py +0 -0
  66. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_gemma4.py +0 -0
  67. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_glm53_flash.py +0 -0
  68. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_glm_tool_name_validation.py +0 -0
  69. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_hy3.py +0 -0
  70. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_incremental.py +0 -0
  71. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_inkling.py +0 -0
  72. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_is_content.py +0 -0
  73. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_kimi_k25_tool_schema.py +0 -0
  74. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_laguna_m1.py +0 -0
  75. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_laguna_xs21.py +0 -0
  76. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_llama_3.py +0 -0
  77. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_load_tokenizer.py +0 -0
  78. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_message_indices.py +0 -0
  79. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_message_tool_names.py +0 -0
  80. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_multimodal.py +0 -0
  81. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_muse_glimmer.py +0 -0
  82. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_nemotron35_vlm.py +0 -0
  83. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_nemotron3_ultra.py +0 -0
  84. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_offsetless_tokenizers.py +0 -0
  85. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_parity.py +0 -0
  86. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_parse_response.py +0 -0
  87. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_parse_response_robustness.py +0 -0
  88. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_parsers.py +0 -0
  89. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_preserve_thinking.py +0 -0
  90. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_qwen35_size_coverage.py +0 -0
  91. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_qwen38.py +0 -0
  92. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_reasoning_boundaries.py +0 -0
  93. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_renderer_config.py +0 -0
  94. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_roundtrip.py +0 -0
  95. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_sampled_mask.py +0 -0
  96. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_tagged_rollout.py +0 -0
  97. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_tokens_per_message.py +0 -0
  98. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/tests/test_tool_arg_type_preservation.py +0 -0
  99. {renderers-0.1.13.dev15 → renderers-0.1.13.dev16}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: renderers
3
- Version: 0.1.13.dev15
3
+ Version: 0.1.13.dev16
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
@@ -6,6 +6,8 @@ except ImportError:
6
6
  # installs always have it.
7
7
  __version__ = "0+unknown"
8
8
 
9
+ from typing import TYPE_CHECKING
10
+
9
11
  from renderers.base import (
10
12
  MULTIMODAL_MODELS,
11
13
  ChatTemplateTokenizer,
@@ -42,7 +44,6 @@ from renderers.base import (
42
44
  template_field_names,
43
45
  trim_to_turn_close,
44
46
  )
45
- from renderers.client import MalformedGenerateResponseError, OverlongPromptError
46
47
  from renderers.configs import (
47
48
  AutoRendererConfig,
48
49
  BaseRendererConfig,
@@ -83,14 +84,18 @@ from renderers.configs import (
83
84
  )
84
85
  from renderers.custom import custom_renderer_config, load_custom_renderer, load_target
85
86
 
86
- # Concrete renderer classes are lazy-loaded so that consumers needing only the
87
- # config layer (``RendererConfig`` discriminated union) don't import every
88
- # renderer module. Renderer tokenizer annotations use the local ``Tokenizer``
89
- # protocols, so resolving a text renderer remains safe when the optional
87
+ if TYPE_CHECKING:
88
+ from renderers.client import MalformedGenerateResponseError, OverlongPromptError
89
+
90
+ # Concrete renderer classes and the HTTP client's errors are lazy-loaded so that
91
+ # consumers needing only the config layer (``RendererConfig`` discriminated union)
92
+ # import neither every renderer module nor the OpenAI client. Renderer tokenizer
93
+ # annotations use the local ``Tokenizer`` protocols, so resolving a text renderer
94
+ # remains safe when the optional
90
95
  # ``transformers`` dependency is absent. ``__getattr__`` (PEP 562) resolves the
91
96
  # names on first attribute access, while ``renderers.base._populate_registry``
92
97
  # handles lazy registration for ``create_renderer``.
93
- _LAZY_RENDERERS: dict[str, str] = {
98
+ _LAZY_EXPORTS: dict[str, str] = {
94
99
  "DeepSeekR1Renderer": "renderers.deepseek_r1",
95
100
  "DeepSeekV3Renderer": "renderers.deepseek_v3",
96
101
  "DeepSeekV4Renderer": "renderers.deepseek_v4",
@@ -111,11 +116,13 @@ _LAZY_RENDERERS: dict[str, str] = {
111
116
  "LagunaXS21Renderer": "renderers.laguna_xs2",
112
117
  "LagunaXS2Renderer": "renderers.laguna_xs2",
113
118
  "Llama3Renderer": "renderers.llama_3",
119
+ "MalformedGenerateResponseError": "renderers.client",
114
120
  "MiniMaxM2Renderer": "renderers.minimax_m2",
115
121
  "MuseGlimmerRenderer": "renderers.muse_glimmer",
116
122
  "Nemotron35Renderer": "renderers.nemotron3",
117
123
  "Nemotron3Renderer": "renderers.nemotron3",
118
124
  "Nemotron3UltraRenderer": "renderers.nemotron3",
125
+ "OverlongPromptError": "renderers.client",
119
126
  "PrimeQwen3Renderer": "renderers.prime_qwen3",
120
127
  "Qwen35Renderer": "renderers.qwen35",
121
128
  "Qwen36Renderer": "renderers.qwen36",
@@ -126,10 +133,10 @@ _LAZY_RENDERERS: dict[str, str] = {
126
133
 
127
134
 
128
135
  def __getattr__(name: str):
129
- if name in _LAZY_RENDERERS:
136
+ if name in _LAZY_EXPORTS:
130
137
  import importlib
131
138
 
132
- module = importlib.import_module(_LAZY_RENDERERS[name])
139
+ module = importlib.import_module(_LAZY_EXPORTS[name])
133
140
  value = getattr(module, name)
134
141
  globals()[name] = value # cache for subsequent lookups
135
142
  return value
@@ -137,7 +144,7 @@ def __getattr__(name: str):
137
144
 
138
145
 
139
146
  def __dir__() -> list[str]:
140
- return sorted(set(globals().keys()) | set(_LAZY_RENDERERS))
147
+ return sorted(set(globals().keys()) | set(_LAZY_EXPORTS))
141
148
 
142
149
 
143
150
  __all__ = [
@@ -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.13.dev15'
22
- __version_tuple__ = version_tuple = (0, 1, 13, 'dev15')
21
+ __version__ = version = '0.1.13.dev16'
22
+ __version_tuple__ = version_tuple = (0, 1, 13, 'dev16')
23
23
 
24
24
  __commit_id__ = commit_id = None