From c7c2e70559b31f9764646658e7e48d0697840f78 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 24 May 2026 15:14:47 +0000 Subject: [PATCH] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- studio/backend/core/inference/tools.py | 24 +++++++-------- .../backend/tests/test_sandbox_hardening.py | 30 ++++++------------- 2 files changed, 20 insertions(+), 34 deletions(-) diff --git a/studio/backend/core/inference/tools.py b/studio/backend/core/inference/tools.py index 50c8a97c4b..b023e1aa2f 100644 --- a/studio/backend/core/inference/tools.py +++ b/studio/backend/core/inference/tools.py @@ -370,7 +370,9 @@ _BASH_DIR_EXFIL_RE = re.compile( + r")\b[^;&|\n]*?" + r"(?:" + _HOME_PREFIX_RE - + r"(?:" + "|".join(_BASH_SENSITIVE_DIR_NAMES) + r")" + + r"(?:" + + "|".join(_BASH_SENSITIVE_DIR_NAMES) + + r")" + r"(?=/?$|/?[\s'\";&|)<>])" + r"|" + r"(?])" @@ -446,17 +448,13 @@ def _normalize_path_separators(text: str) -> str: tail = collapsed[len(prefix) :] if tail.startswith("..") or tail.startswith("./.."): return posixpath.normpath("/" + tail) - return prefix + posixpath.normpath( - "/" + tail - ).lstrip("/") + return prefix + posixpath.normpath("/" + tail).lstrip("/") tilde_user = _TILDE_USER_PREFIX_RE.match(collapsed) if tilde_user: tail = collapsed[tilde_user.end() :] if tail.startswith("..") or tail.startswith("./.."): return posixpath.normpath("/" + tail) - return tilde_user.group(0) + posixpath.normpath( - "/" + tail - ).lstrip("/") + return tilde_user.group(0) + posixpath.normpath("/" + tail).lstrip("/") collapsed = posixpath.normpath(collapsed) return collapsed @@ -1542,9 +1540,7 @@ def _check_signal_escape_patterns(code: str): elif _node.module == "pathlib": for alias in _node.names: if alias.name in _PATHLIB_PATH_CLASSES_PREPASS: - path_class_aliases_prepass.add( - alias.asname or alias.name - ) + path_class_aliases_prepass.add(alias.asname or alias.name) _run_alias_prepass(tree) @@ -1894,9 +1890,11 @@ def _check_signal_escape_patterns(code: str): # Annotated assignment (``path: str = '/etc/shadow'``) is # an ast.AnnAssign, not an ast.Assign. Same surface: a # single Name target bound to a single value. - if isinstance(_assign, ast.AnnAssign) and isinstance( - _assign.target, ast.Name - ) and _assign.value is not None: + if ( + isinstance(_assign, ast.AnnAssign) + and isinstance(_assign.target, ast.Name) + and _assign.value is not None + ): _val = _extract_string_from_node(_assign.value) if _val is None: _val = _extract_pathlib_target( diff --git a/studio/backend/tests/test_sandbox_hardening.py b/studio/backend/tests/test_sandbox_hardening.py index 9480dbdb41..f8f660eedb 100644 --- a/studio/backend/tests/test_sandbox_hardening.py +++ b/studio/backend/tests/test_sandbox_hardening.py @@ -2062,9 +2062,7 @@ class TestR6_PathTraversalNormalization: ], ) def test_path_traversal_blocked(self, cmd): - assert _find_sensitive_paths(cmd), ( - f"path traversal leaked: {cmd!r}" - ) + assert _find_sensitive_paths(cmd), f"path traversal leaked: {cmd!r}" class TestR6_PandasNumpyKeywordArgs: @@ -2126,9 +2124,7 @@ class TestR6_BashDirectoryExfil: ], ) def test_bash_dir_exfil_blocked(self, cmd): - assert _find_sensitive_paths(cmd), ( - f"bash dir exfil leaked: {cmd!r}" - ) + assert _find_sensitive_paths(cmd), f"bash dir exfil leaked: {cmd!r}" @pytest.mark.parametrize( "cmd", @@ -2142,9 +2138,7 @@ class TestR6_BashDirectoryExfil: ], ) def test_bash_dir_exfil_legit_allowed(self, cmd): - assert not _find_sensitive_paths(cmd), ( - f"legit bash dir blocked: {cmd!r}" - ) + assert not _find_sensitive_paths(cmd), f"legit bash dir blocked: {cmd!r}" class TestR6_InnerTreeAliasWalk: @@ -2194,9 +2188,7 @@ class TestR6_ChainedAndAnnAssign: ], ) def test_chained_annassign_legit_allowed(self, code): - assert not _is_blocked(code), ( - f"legit chained/AnnAssign blocked: {code!r}" - ) + assert not _is_blocked(code), f"legit chained/AnnAssign blocked: {code!r}" class TestR6_BraceBombEmptyAlt: @@ -2215,9 +2207,9 @@ class TestR6_BraceBombEmptyAlt: def test_brace_bomb_empty_alt_blocked(self, n_dummies): dummies = ",".join(f"x{i}" for i in range(n_dummies)) cmd = f"cat ~/{{,{dummies}}}/{{.ssh/id_rsa,other}}" - assert _find_sensitive_paths(cmd), ( - f"brace empty-alt bomb leaked at n={n_dummies}: {cmd!r}" - ) + assert _find_sensitive_paths( + cmd + ), f"brace empty-alt bomb leaked at n={n_dummies}: {cmd!r}" @pytest.mark.parametrize( "cmd", @@ -2228,9 +2220,7 @@ class TestR6_BraceBombEmptyAlt: ], ) def test_inner_brace_sensitive_blocked(self, cmd): - assert _find_sensitive_paths(cmd), ( - f"inner-brace sensitive name leaked: {cmd!r}" - ) + assert _find_sensitive_paths(cmd), f"inner-brace sensitive name leaked: {cmd!r}" @pytest.mark.parametrize( "cmd", @@ -2241,6 +2231,4 @@ class TestR6_BraceBombEmptyAlt: ], ) def test_brace_legit_allowed(self, cmd): - assert not _find_sensitive_paths(cmd), ( - f"legit brace blocked: {cmd!r}" - ) + assert not _find_sensitive_paths(cmd), f"legit brace blocked: {cmd!r}"