renderers 0.1.8.dev49__tar.gz → 0.1.8.dev50__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.8.dev50/.github/workflows/publish-dev.yml +67 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/PKG-INFO +1 -1
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/pyproject.toml +16 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/_version.py +2 -2
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/uv.lock +2 -2
- renderers-0.1.8.dev49/.github/workflows/publish-dev.yml +0 -104
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/.github/workflows/publish.yml +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/.github/workflows/style.yml +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/.github/workflows/test.yml +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/.gitignore +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/.pre-commit-config.yaml +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/LICENSE +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/README.md +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/docs/renderer-config.md +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/examples/README.md +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/examples/sglang/multiturn_generate_sglang.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/examples/sglang/online_multiturn_sglang.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/examples/tinker/multiturn_generate_tinker.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/examples/transformers/multiturn_generate_transformers.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/examples/vllm/multiturn_generate_vllm.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/__init__.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/base.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/client.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/configs.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/deepseek_r1.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/deepseek_v3.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/default.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/glm45.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/glm5.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/gpt_oss.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/kimi_k2.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/kimi_k25.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/laguna_xs2.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/llama_3.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/minimax_m2.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/nemotron3.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/parsers.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/parsing.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/qwen3.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/qwen35.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/qwen36.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/renderers/qwen3_vl.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/conftest.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_bridge.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_build_helpers.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_client.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_deepseek_r1.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_gpt_oss_harmony_parity.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_incremental.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_is_content.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_kimi_k25_tool_schema.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_llama_3.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_load_tokenizer.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_load_tokenizer_fastokens.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_message_indices.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_message_tool_names.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_multimodal.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_nemotron3_parity.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_nemotron3_ultra.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_parse_response.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_parse_response_robustness.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_parsers.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_preserve_thinking.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_qwen35_size_coverage.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_render_ids.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_renderer_config.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_renderer_config_parity.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_roundtrip.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_sampled_mask.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_tokens_per_message.py +0 -0
- {renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/tests/test_tool_arg_type_preservation.py +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: Publish Dev
|
|
2
|
+
|
|
3
|
+
# Every push to main publishes a pre-release wheel to PyPI. The version
|
|
4
|
+
# is derived at build time by hatch-vcs from ``git describe`` distance
|
|
5
|
+
# to the latest stable ``renderers-v<MAJOR>.<MINOR>.<PATCH>`` tag (see
|
|
6
|
+
# ``[tool.hatch.version.raw-options]`` in pyproject.toml) — no per-commit
|
|
7
|
+
# tag is created. ``local_scheme = "no-local-version"`` strips the
|
|
8
|
+
# ``+gHASH`` segment so PyPI accepts the wheel directly.
|
|
9
|
+
|
|
10
|
+
on:
|
|
11
|
+
push:
|
|
12
|
+
branches: [main]
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: publish-dev-${{ github.ref }}
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
# Build (no OIDC) → publish (OIDC only). The build job runs ``uv build``
|
|
20
|
+
# with ``contents: read`` only so a poisoned build-time dep cannot mint
|
|
21
|
+
# the OIDC token. The publish job has ``id-token: write`` and the
|
|
22
|
+
# pypi-prod environment but no source checkout — it only downloads the
|
|
23
|
+
# prebuilt artifact and runs the SHA-pinned pypa publish action.
|
|
24
|
+
build:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
permissions:
|
|
27
|
+
contents: read
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
# hatch-vcs needs the full tag history to resolve the version
|
|
32
|
+
# from the latest stable tag's distance.
|
|
33
|
+
fetch-depth: 0
|
|
34
|
+
|
|
35
|
+
- uses: astral-sh/setup-uv@v7
|
|
36
|
+
|
|
37
|
+
- name: Build renderers
|
|
38
|
+
run: uv build
|
|
39
|
+
|
|
40
|
+
- name: Show derived version
|
|
41
|
+
run: ls -1 dist/
|
|
42
|
+
|
|
43
|
+
- name: Upload dist artifacts
|
|
44
|
+
uses: actions/upload-artifact@v4
|
|
45
|
+
with:
|
|
46
|
+
name: dist-dev
|
|
47
|
+
path: dist/
|
|
48
|
+
if-no-files-found: error
|
|
49
|
+
retention-days: 7
|
|
50
|
+
|
|
51
|
+
publish:
|
|
52
|
+
needs: build
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
environment: pypi-prod
|
|
55
|
+
permissions:
|
|
56
|
+
id-token: write
|
|
57
|
+
steps:
|
|
58
|
+
- name: Download dist artifacts
|
|
59
|
+
uses: actions/download-artifact@v4
|
|
60
|
+
with:
|
|
61
|
+
name: dist-dev
|
|
62
|
+
path: dist/
|
|
63
|
+
|
|
64
|
+
- name: Publish to PyPI
|
|
65
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
66
|
+
with:
|
|
67
|
+
skip-existing: true
|
|
@@ -57,6 +57,22 @@ tag-pattern = '^renderers-v(?P<version>.+)$'
|
|
|
57
57
|
# only fires when the resolver has nothing to go on.
|
|
58
58
|
fallback-version = "0.0.0"
|
|
59
59
|
|
|
60
|
+
[tool.hatch.version.raw-options]
|
|
61
|
+
# Only stable ``renderers-v<MAJOR>.<MINOR>.<PATCH>`` tags participate in
|
|
62
|
+
# version resolution; legacy per-commit ``.devN`` tags are excluded.
|
|
63
|
+
# Untagged commits get a clean PEP 440 dev version derived from distance
|
|
64
|
+
# to the latest stable tag (e.g. ``0.1.8.dev46``), with no ``+gHASH``
|
|
65
|
+
# local segment so PyPI accepts the wheel directly. setuptools-scm
|
|
66
|
+
# refuses to bump a pre-existing ``.devN`` tag, so matching only stable
|
|
67
|
+
# tags also unblocks local ``uv lock`` / ``uv build`` on untagged
|
|
68
|
+
# branches. Mirrors verifiers' setup.
|
|
69
|
+
local_scheme = "no-local-version"
|
|
70
|
+
git_describe_command = [
|
|
71
|
+
"git", "describe", "--tags", "--long",
|
|
72
|
+
"--match", "renderers-v[0-9]*.[0-9]*.[0-9]*",
|
|
73
|
+
"--exclude", "*dev*",
|
|
74
|
+
]
|
|
75
|
+
|
|
60
76
|
[tool.hatch.build.hooks.vcs]
|
|
61
77
|
# Write the resolved version to a Python file so it can be inspected
|
|
62
78
|
# at runtime via ``renderers.__version__`` without re-parsing the
|
|
@@ -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.8.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, 8, '
|
|
21
|
+
__version__ = version = '0.1.8.dev50'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 8, 'dev50')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -9,7 +9,7 @@ resolution-markers = [
|
|
|
9
9
|
]
|
|
10
10
|
|
|
11
11
|
[options]
|
|
12
|
-
exclude-newer = "2026-
|
|
12
|
+
exclude-newer = "2026-06-19T02:55:59.889910839Z"
|
|
13
13
|
exclude-newer-span = "P7D"
|
|
14
14
|
|
|
15
15
|
[options.exclude-newer-package]
|
|
@@ -1409,7 +1409,7 @@ requires-dist = [
|
|
|
1409
1409
|
{ name = "jinja2" },
|
|
1410
1410
|
{ name = "numpy" },
|
|
1411
1411
|
{ name = "openai", specifier = ">=1.108.1" },
|
|
1412
|
-
{ name = "openai-harmony", specifier = ">=0.0.
|
|
1412
|
+
{ name = "openai-harmony", specifier = ">=0.0.4" },
|
|
1413
1413
|
{ name = "prime-pydantic-config", specifier = ">=0.3.0.dev83" },
|
|
1414
1414
|
{ name = "tiktoken" },
|
|
1415
1415
|
{ name = "transformers", specifier = ">=4.50.0" },
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
name: Publish Dev
|
|
2
|
-
|
|
3
|
-
# Tag every commit on main as ``renderers-v<next>.dev<N>`` and publish the
|
|
4
|
-
# wheel to PyPI as a pre-release. ``<next>`` is the latest release tag with
|
|
5
|
-
# its patch bumped; ``<N>`` is the number of commits since that release so
|
|
6
|
-
# each main commit maps to a unique PEP 440 dev version.
|
|
7
|
-
#
|
|
8
|
-
# Building from the freshly-created tag means hatch-vcs resolves the version
|
|
9
|
-
# cleanly (no ``+gHASH`` local segment), which PyPI requires.
|
|
10
|
-
|
|
11
|
-
on:
|
|
12
|
-
push:
|
|
13
|
-
branches: [main]
|
|
14
|
-
|
|
15
|
-
concurrency:
|
|
16
|
-
group: publish-dev-${{ github.ref }}
|
|
17
|
-
cancel-in-progress: false
|
|
18
|
-
|
|
19
|
-
jobs:
|
|
20
|
-
tag:
|
|
21
|
-
runs-on: ubuntu-latest
|
|
22
|
-
permissions:
|
|
23
|
-
contents: write
|
|
24
|
-
outputs:
|
|
25
|
-
tag: ${{ steps.compute.outputs.tag }}
|
|
26
|
-
steps:
|
|
27
|
-
- uses: actions/checkout@v4
|
|
28
|
-
with:
|
|
29
|
-
fetch-depth: 0
|
|
30
|
-
|
|
31
|
-
- name: Compute next dev tag
|
|
32
|
-
id: compute
|
|
33
|
-
run: |
|
|
34
|
-
set -euo pipefail
|
|
35
|
-
LATEST_RELEASE=$(git tag --list 'renderers-v*' --sort=-v:refname \
|
|
36
|
-
| grep -Ev '(dev|rc|a[0-9]|b[0-9])' \
|
|
37
|
-
| head -1)
|
|
38
|
-
if [ -z "$LATEST_RELEASE" ]; then
|
|
39
|
-
echo "No release tag matching 'renderers-v<MAJOR.MINOR.PATCH>' found" >&2
|
|
40
|
-
exit 1
|
|
41
|
-
fi
|
|
42
|
-
BASE=${LATEST_RELEASE#renderers-v}
|
|
43
|
-
MAJOR=$(echo "$BASE" | cut -d. -f1)
|
|
44
|
-
MINOR=$(echo "$BASE" | cut -d. -f2)
|
|
45
|
-
PATCH=$(echo "$BASE" | cut -d. -f3)
|
|
46
|
-
NEXT="${MAJOR}.${MINOR}.$((PATCH + 1))"
|
|
47
|
-
N=$(git rev-list --count "${LATEST_RELEASE}..HEAD")
|
|
48
|
-
TAG="renderers-v${NEXT}.dev${N}"
|
|
49
|
-
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
|
|
50
|
-
echo "Computed tag: ${TAG} (base=${LATEST_RELEASE}, commits=${N})"
|
|
51
|
-
|
|
52
|
-
- name: Create and push tag
|
|
53
|
-
env:
|
|
54
|
-
TAG: ${{ steps.compute.outputs.tag }}
|
|
55
|
-
run: |
|
|
56
|
-
set -euo pipefail
|
|
57
|
-
if git ls-remote --exit-code --tags origin "refs/tags/${TAG}" >/dev/null 2>&1; then
|
|
58
|
-
echo "Tag ${TAG} already exists on origin — nothing to do" >&2
|
|
59
|
-
exit 0
|
|
60
|
-
fi
|
|
61
|
-
git config user.name 'github-actions[bot]'
|
|
62
|
-
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
|
|
63
|
-
git tag -a "$TAG" -m "Automated dev release ${TAG}"
|
|
64
|
-
git push origin "$TAG"
|
|
65
|
-
|
|
66
|
-
build:
|
|
67
|
-
needs: tag
|
|
68
|
-
runs-on: ubuntu-latest
|
|
69
|
-
permissions:
|
|
70
|
-
contents: read
|
|
71
|
-
steps:
|
|
72
|
-
- uses: actions/checkout@v4
|
|
73
|
-
with:
|
|
74
|
-
fetch-depth: 0
|
|
75
|
-
ref: refs/tags/${{ needs.tag.outputs.tag }}
|
|
76
|
-
|
|
77
|
-
- uses: astral-sh/setup-uv@v7
|
|
78
|
-
|
|
79
|
-
- name: Build renderers
|
|
80
|
-
run: uv build
|
|
81
|
-
|
|
82
|
-
- name: Upload dist artifacts
|
|
83
|
-
uses: actions/upload-artifact@v4
|
|
84
|
-
with:
|
|
85
|
-
name: dist-dev
|
|
86
|
-
path: dist/
|
|
87
|
-
if-no-files-found: error
|
|
88
|
-
retention-days: 7
|
|
89
|
-
|
|
90
|
-
publish:
|
|
91
|
-
needs: build
|
|
92
|
-
runs-on: ubuntu-latest
|
|
93
|
-
environment: pypi-prod
|
|
94
|
-
permissions:
|
|
95
|
-
id-token: write
|
|
96
|
-
steps:
|
|
97
|
-
- name: Download dist artifacts
|
|
98
|
-
uses: actions/download-artifact@v4
|
|
99
|
-
with:
|
|
100
|
-
name: dist-dev
|
|
101
|
-
path: dist/
|
|
102
|
-
|
|
103
|
-
- name: Publish to PyPI
|
|
104
|
-
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
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.8.dev49 → renderers-0.1.8.dev50}/examples/sglang/multiturn_generate_sglang.py
RENAMED
|
File without changes
|
|
File without changes
|
{renderers-0.1.8.dev49 → renderers-0.1.8.dev50}/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
|