The compat module imports `is_tracing` from
`transformers.utils.import_utils`, but that symbol is only exported
from transformers >= 4.52 (added when the upstream
`_prepare_4d_attention_mask_for_sdpa` rewrite landed). Unsloth
declares `transformers>=4.51.3` in pyproject.toml, so on the lower
bound tested by CI (`__from_pyproject__` matrix cell) the new
top-level import raises ImportError before any patched module can
import the compat helpers.
Mirror the conservative pre-`is_tracing` upstream behavior: when the
symbol is missing, define a local `is_tracing(tensor=None)` that only
consults `is_torchdynamo_compiling`. The `tensor` argument is accepted
but ignored — the older release has no public API for fake-tensor /
JAX-jit detection via `import_utils` either, and the previously-used
upstream code path on transformers 4.51.x guarded the same checks by
`is_torchdynamo_compiling` alone.
Tests:
- `test_import_falls_back_when_is_tracing_missing` reloads the compat
module with `is_tracing` removed from
`transformers.utils.import_utils` and asserts the local fallback is
in use (returns False when dynamo is idle, accepts the optional
tensor positional arg).
- All 26 tests in `tests/utils/test_attn_mask_compat.py` pass.
This addresses the Codex review feedback (P1) on PR #6880.
Signed-off-by: Taranum Wasu <taranumwasu@Taranums-MacBook-Pro.local>
Co-authored-by: Cursor <cursoragent@cursor.com>