forked from PrimeIntellect-ai/renderers
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
104 lines (96 loc) · 3.99 KB
/
pyproject.toml
File metadata and controls
104 lines (96 loc) · 3.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[project]
name = "renderers"
# Derived from git tags by hatch-vcs (see [tool.hatch.version] below).
# Untagged commits get PEP 440 dev versions like ``0.1.8.dev3+g4c877be4``
# so any commit is uniquely installable; tagged commits get clean
# release versions like ``0.1.8``.
dynamic = ["version"]
description = "Chat template renderers — deterministic message-to-token conversion for LLM training"
readme = "README.md"
license = "Apache-2.0"
license-files = ["LICENSE"]
requires-python = ">=3.10,<3.14"
dependencies = [
"numpy",
"openai>=1.108.1",
"tiktoken",
"jinja2",
"transformers>=4.50.0",
# Used by GptOssRenderer to render and parse harmony tokens. Vendoring
# OpenAI's reference implementation keeps us byte-identical with vLLM
# (which also uses it) and saves us mirroring a 330-line Jinja template.
#
# Floor is ``>=0.0.4`` (not the latest 0.0.8) on purpose: every SGLang
# release through 0.5.12.post1 hard-pins ``openai-harmony==0.0.4``, so a
# higher floor makes ``renderers`` uninstallable alongside SGLang. The
# GptOssRenderer renders byte-identically on 0.0.4 (verified token-for-token
# against 0.0.8) and ``tests/test_gpt_oss_harmony_parity.py`` passes on it,
# so the older harmony is safe.
"openai-harmony>=0.0.4",
# Crusoe's Rust BPE tokenizer; ~10x faster encode vs HF's tokenizers.
# ``load_tokenizer`` patches it in by default for every supported model
# except a small denylist (DeepSeek-V3 family). The patch is bracketed
# around ``from_pretrained``, so subsequent ``AutoTokenizer`` calls
# outside the renderers package stay vanilla.
"fastokens>=0.2.0",
# ``BaseRendererConfig`` inherits from ``pydantic_config.BaseConfig`` so
# the typed-config surface stays uniform with prime-rl / verifiers config
# bases. Transitively brings pydantic, which ``renderers.configs`` also
# imports directly.
"prime-pydantic-config>=0.3.0.dev83",
]
[tool.hatch.version]
source = "vcs"
# Tags look like ``renderers-v0.1.8`` (prefix matches the publish.yml
# release contract); strip the prefix to get a PEP 440 version. The
# regex accepts any PEP 440-valid suffix after the prefix so we can
# tag pre-releases like ``renderers-v0.2.0rc1`` later if needed.
tag-pattern = '^renderers-v(?P<version>.+)$'
# Used when building from a context without VCS metadata (e.g. an
# sdist consumed by a downstream that doesn't ship .git). Real
# builds from a checkout get the resolved version; this fallback
# only fires when the resolver has nothing to go on.
fallback-version = "0.0.0"
[tool.hatch.build.hooks.vcs]
# Write the resolved version to a Python file so it can be inspected
# at runtime via ``renderers.__version__`` without re-parsing the
# wheel metadata.
version-file = "renderers/_version.py"
[tool.hatch.build.targets.wheel]
packages = ["renderers"]
[dependency-groups]
dev = [
"pillow>=12.2.0",
"pre-commit",
"pytest>=7.0.0",
"pytest-asyncio>=0.21.0",
"ruff",
"torch>=2.11.0",
"torchvision>=0.26.0",
"ty>=0.0.1a29,<0.0.22",
]
[tool.uv]
exclude-newer = "7 days"
# fastokens 0.2.0 was published on 2026-05-17 and contains the
# ``unpatch_transformers`` fix (crusoecloud/fastokens#32) needed for
# MiniMax-M2's slow→fast tokenizer conversion path. Exempting it from
# the project-wide 7-day cutoff lets the lockfile pick it up immediately
# while the rest of the dependency graph stays gated.
exclude-newer-package = { fastokens = false, "prime-pydantic-config" = false }
[tool.ty.environment]
python-version = "3.13"
[tool.ty.rules]
# Pre-existing diagnostics in v0.1.5 source — downgrade to advisory so CI
# surfaces them without blocking. Tighten back to error as we clean up.
unknown-argument = "warn"
redundant-cast = "ignore"
unresolved-import = "warn"
invalid-argument-type = "warn"
unresolved-attribute = "warn"
invalid-key = "warn"
unsupported-operator = "warn"
invalid-return-type = "warn"
invalid-assignment = "warn"