• v0.1.471-beta 7ecbf5a770

    Ghost released this 2026-06-22 18:06:03 +02:00 | 596 commits to main since this release

    Use UTF-8 for Python code-execution subprocess I/O (#6489 class) (#6548)

    • Use UTF-8 for Python code-execution subprocess I/O

    Studio's code-execution tool already tells the child to emit UTF-8
    (PYTHONIOENCODING=utf-8 in _build_safe_env), but _python_exec writes the
    temp script and decodes the subprocess pipe with the OS default codec.
    On Windows (cp1252), non-ASCII in model-written code or its output --
    arrows, CJK, emoji -- raises UnicodeEncodeError / UnicodeDecodeError and
    breaks execution.

    Complete the UTF-8 wiring in core/inference/tools.py:

    • write the temp script with encoding="utf-8"
    • decode _python_exec stdout as utf-8, errors="replace"
    • set PYTHONIOENCODING=utf-8 in _build_bypass_env too (matches
      _build_safe_env, so the bypass path's child also emits utf-8)

    The child is python with PYTHONIOENCODING=utf-8, so it emits UTF-8
    regardless of the console code page and the decode is always correct.
    Shell execution via cmd.exe has a separate console-code-page story and
    is left to a follow-up.

    Refs unslothai/unsloth#6489

    • Scope Python exec UTF-8 env to Python tool

    • Make bash bypass test robust to a host-set PYTHONIOENCODING for PR #6548

    Bypass mode preserves benign host env vars, so a host-set PYTHONIOENCODING was
    inherited into the bash bypass env and tripped the new assertion even though
    _bash_exec never adds it. Clear it in the test so the assertion checks _bash_exec,
    not the runner environment.


    Co-authored-by: Lee Jackson 130007945+Imagineer99@users.noreply.github.com
    Co-authored-by: Daniel Han danielhanchen@gmail.com

    Downloads