fix: running unsloth inside of System32 now refuses to run and quits with an error (#5934)

* -Added catch for unsloth running inside of system32 (for windows)
- changed import statement to import os as _os instead of only os.path as _osp
- replaced __osp mention with __os.path

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Adressed geminis codereview. Did not change Error message as "System32" is precise enough and the _system32 variable is lowercase only

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Etherll <61019402+Etherll@users.noreply.github.com>
This commit is contained in:
Dariton4000 2026-06-11 14:27:13 +02:00 committed by GitHub
commit 8628439ede
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,7 +1,7 @@
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2026-present the Unsloth AI Inc. team. All rights reserved. See /studio/LICENSE.AGPL-3.0
import os.path as _osp
import os as _os
import sys as _sys
import typer
@ -20,7 +20,7 @@ from unsloth_cli.commands.studio import (
# Canonicalise `-np<N>` only under the `unsloth` console-script;
# third-party scripts that import unsloth_cli keep their argv intact.
_entry_base = _osp.basename(_sys.argv[0]).lower() if _sys.argv else ""
_entry_base = _os.path.basename(_sys.argv[0]).lower() if _sys.argv else ""
if _entry_base in {"unsloth", "unsloth.exe"}:
_expand_attached_np_short()
del _entry_base
@ -53,7 +53,21 @@ def main(
help = "Show version and exit.",
),
):
pass
if (
_sys.platform == "win32"
): # this block catches unsloth running inside of System32 or any subdirs, this WILL cause errors if not prevented.
_cwd = _os.path.normcase(_os.path.normpath(_os.getcwd()))
_system32 = _os.path.normcase(
_os.path.normpath(_os.path.join(_os.environ.get("WINDIR", r"C:\Windows"), "System32"))
)
if _cwd == _system32 or _cwd.startswith(_system32 + _os.sep):
typer.secho(
"Refusing to run Unsloth inside System32 as it will lead to Errors.\n"
"cd to a normal working directory and try again.",
fg = "red",
err = True,
)
raise typer.Exit(code = 1)
app.command()(train)