From d569ec25e22181d10c4e7d55bd6fc12656a1361d Mon Sep 17 00:00:00 2001 From: cancan Date: Thu, 17 Sep 2026 15:47:59 +0000 Subject: [PATCH] fix(xlite): use getattr for index_full_mask in extract_kv_cache extract_kv_cache() read self.xlite_config.index_full_mask directly, but XModelConfig does not statically declare that attribute (it is set dynamically in _build_model_config). mypy reports "XModelConfig" has no attribute "index_full_mask" [attr-defined], which blocks the repository-wide pre-commit/mypy job for unrelated PRs. Use the same safe getattr(self.xlite_config, "index_full_mask", None) access already used in _build_model(), falling back to a full-True mask. Runtime behavior is unchanged for all cases where the attribute is set. Fixes #16658 Signed-off-by: cancan --- vllm_ascend/xlite/xlite.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vllm_ascend/xlite/xlite.py b/vllm_ascend/xlite/xlite.py index f71e4d22fdb1..9ff835f6bf5d 100644 --- a/vllm_ascend/xlite/xlite.py +++ b/vllm_ascend/xlite/xlite.py @@ -661,7 +661,9 @@ def extract_kv_cache(self, kv_caches: list[tuple[torch.Tensor, ...]], /) -> list mla_caches: list[tuple[torch.Tensor, ...]] = [] idx = 0 - index_mask = self.xlite_config.index_full_mask or [True] * self.xlite_config.n_layers + index_mask: list[bool] = ( + getattr(self.xlite_config, "index_full_mask", None) or [True] * self.xlite_config.n_layers + ) dummy_indexer_cache = (_DUMMY_TENSOR,) for mask in index_mask: indexer_caches.append(kv_caches[idx] if mask else dummy_indexer_cache)