Commit 67672dc5b for llama.cpp
commit 67672dc5b76f8bc17785a19d3dc6d1463fc2902c
Author: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co>
Date: Mon Sep 7 21:10:06 2026 +0200
ci : bump ty to 0.0.78 (#28548)
* bump ty to 0.0.78
* type fixes
* more type fixes
* add --exit-zero-on-warning
* remove Callable again
diff --git a/.github/workflows/python-type-check.yml b/.github/workflows/python-type-check.yml
index 14edb1a9d..1a2f40ad4 100644
--- a/.github/workflows/python-type-check.yml
+++ b/.github/workflows/python-type-check.yml
@@ -31,7 +31,7 @@ jobs:
uses: actions/setup-python@v6
with:
python-version: "3.11"
- pip-install: -r requirements/requirements-all.txt ty==0.0.35
+ pip-install: -r requirements/requirements-all.txt ty==0.0.78
# - name: Type-check with Pyright
# uses: jakebailey/pyright-action@v2
# with:
@@ -40,4 +40,4 @@ jobs:
# warnings: true
- name: Type-check with ty
run: |
- ty check --output-format=github
+ ty check --exit-zero-on-warning --output-format=github
diff --git a/conversion/minimax.py b/conversion/minimax.py
index 53a9ff60f..aac340c61 100644
--- a/conversion/minimax.py
+++ b/conversion/minimax.py
@@ -25,7 +25,7 @@ class MiniMaxText01Model(TextModel):
# they get in the way of the token sampling process and must be suppressed
tokenizer = AutoTokenizer.from_pretrained(self.dir_model, trust_remote_code=True)
- tokenizer_vocab_size = tokenizer.vocab_size
+ tokenizer_vocab_size = tokenizer.vocab_size # ty: ignore[unresolved-attribute]
with open(self.dir_model / "model.safetensors.index.json", "r", encoding="utf-8") as f:
weight_map = json.load(f)["weight_map"]
diff --git a/conversion/muse_glimmer.py b/conversion/muse_glimmer.py
index b205f70a0..c86b33227 100644
--- a/conversion/muse_glimmer.py
+++ b/conversion/muse_glimmer.py
@@ -37,7 +37,7 @@ class MuseGlimmerModel(TextModel):
from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained(self.dir_model)
- eot_id = tok.convert_tokens_to_ids("<|eot|>")
+ eot_id = tok.convert_tokens_to_ids("<|eot|>") # ty: ignore[unresolved-attribute]
if isinstance(eot_id, int) and eot_id >= 0:
self.gguf_writer.add_eot_token_id(eot_id)
diff --git a/examples/pydantic_models_to_grammar.py b/examples/pydantic_models_to_grammar.py
index 0cdd0b570..736b2b7df 100644
--- a/examples/pydantic_models_to_grammar.py
+++ b/examples/pydantic_models_to_grammar.py
@@ -1177,7 +1177,7 @@ def create_dynamic_model_from_function(func: Callable[..., Any]):
dynamic_fields[param.name] = (
param.annotation if param.annotation != inspect.Parameter.empty else str, default_value)
# Creating the dynamic model
- dynamic_model = create_model(f"{getattr(func, '__name__')}", **dynamic_fields)
+ dynamic_model = create_model(f"{getattr(func, '__name__')}", **dynamic_fields) # ty: ignore[no-matching-overload]
for name, param_doc in param_docs:
dynamic_model.model_fields[name].description = param_doc.description
diff --git a/scripts/jinja/jinja-tester.py b/scripts/jinja/jinja-tester.py
index a83f02541..6d36ecfa5 100755
--- a/scripts/jinja/jinja-tester.py
+++ b/scripts/jinja/jinja-tester.py
@@ -20,7 +20,6 @@ from PySide6.QtCore import Qt, QRect, QSize
from jinja2 import TemplateSyntaxError
from jinja2.sandbox import ImmutableSandboxedEnvironment
from datetime import datetime
-from typing import Callable
def format_template_content(template_content):
@@ -396,7 +395,7 @@ class JinjaTester(QMainWindow):
ensure_ascii=ensure_ascii,
)
)
- env.globals["strftime_now"]: Callable[[str], str] = lambda format: datetime.now().strftime(format)
+ env.globals["strftime_now"] = lambda format: datetime.now().strftime(format) # ty: ignore[invalid-assignment, invalid-argument-type]
env.globals["raise_exception"] = raise_exception # ty: ignore[invalid-assignment]
try:
template = env.from_string(template_str)
diff --git a/scripts/snapdragon/ggml-hexagon-profile.py b/scripts/snapdragon/ggml-hexagon-profile.py
index 038d92fb5..48b3fe479 100755
--- a/scripts/snapdragon/ggml-hexagon-profile.py
+++ b/scripts/snapdragon/ggml-hexagon-profile.py
@@ -7,7 +7,7 @@ import argparse
import statistics
import logging
import bisect
-from typing import Any, Dict, List, Optional
+from typing import Any, Dict, List, Optional, Iterable
from collections import defaultdict
@@ -473,6 +473,8 @@ def print_bubbles_timeline(op):
all_bubbles = []
for t in active_threads:
stats = thread_stats[t]
+ assert isinstance(stats['dma_bubbles'], Iterable)
+ assert isinstance(stats['compute_bubbles'], Iterable)
for start, end, dur in stats['compute_bubbles']:
pct = (dur / batch_duration) * 100.0
all_bubbles.append((dur, f"Thread {t} Compute: bubble of {dur} cycles ({pct:.1f}%) at {start - op_start} to {end - op_start}"))
diff --git a/scripts/tool_bench.py b/scripts/tool_bench.py
index d9f5583d4..fb7df10f3 100755
--- a/scripts/tool_bench.py
+++ b/scripts/tool_bench.py
@@ -52,8 +52,8 @@ import typer
sys.path.insert(0, Path(__file__).parent.parent.as_posix())
if True:
- from tools.server.tests.utils import ServerProcess
- from tools.server.tests.unit.test_tool_call import do_test_calc_result, do_test_hello_world, do_test_weather
+ from tools.server.tests.utils import ServerProcess # ty: ignore[unresolved-import]
+ from tools.server.tests.unit.test_tool_call import do_test_calc_result, do_test_hello_world, do_test_weather # ty: ignore[unresolved-import]
@contextmanager