From ec26768cbbfe3bcbfbd1a6042f3d8de4648d88df Mon Sep 17 00:00:00 2001
From: Michael Han <107991372+shimmyshimmer@users.noreply.github.com>
Date: Thu, 16 Jul 2026 06:59:51 -0700
Subject: [PATCH] Cover dynamic network imports and canvas edge cases
---
studio/backend/core/inference/tools.py | 198 +++++++++++++++++--
studio/backend/tests/test_permission_mode.py | 39 ++++
studio/backend/tests/test_sandbox_tools.py | 23 +++
3 files changed, 249 insertions(+), 11 deletions(-)
diff --git a/studio/backend/core/inference/tools.py b/studio/backend/core/inference/tools.py
index 29feaf40b0..f2268e7962 100644
--- a/studio/backend/core/inference/tools.py
+++ b/studio/backend/core/inference/tools.py
@@ -2410,22 +2410,12 @@ _RENDER_HTML_NETWORK_RE = re.compile(
r"") is True
assert rh("") is True
assert rh("") is True
+ assert rh("") is True
+ assert rh("") is True
+ assert rh("") is False
assert (
rh(
"") is True
# A computed key on a plain object (not a global host) stays a static canvas.
assert rh("") is False
+ assert rh("") is False
+ assert rh("") is False
+ assert rh("") is False
+ # Local and fragment setAttribute values do not leave the canvas.
+ assert (
+ rh(
+ ""
+ )
+ is False
+ )
+ assert (
+ rh(
+ ""
+ )
+ is False
+ )
+ assert (
+ rh(
+ ""
+ )
+ is False
+ )
+ assert (
+ rh(
+ ""
+ )
+ is True
+ )
+ assert (
+ rh("")
+ is True
+ )
assert rh("") is False # comment only
# A meta-refresh with a url navigates the frame to an external origin.
assert rh('') is True
diff --git a/studio/backend/tests/test_sandbox_tools.py b/studio/backend/tests/test_sandbox_tools.py
index 2341bef108..09f0a3b8ce 100644
--- a/studio/backend/tests/test_sandbox_tools.py
+++ b/studio/backend/tests/test_sandbox_tools.py
@@ -128,11 +128,34 @@ class TestLowLevelNetworkModules:
'import httpcore; httpcore.request("GET", "https://example.com")',
'import boto3; boto3.client("s3").list_buckets()',
"from botocore.session import get_session; get_session()",
+ "m = __import__('boto3'); print(m.__name__)",
+ ("import importlib as il; m = il.import_module('http' + 'core'); print(m.__name__)"),
+ (
+ "from importlib import import_module as load; "
+ "name = 'botocore.session'; print(load(name).__name__)"
+ ),
+ (
+ "from builtins import __import__ as load; "
+ "loader = load; print(loader('boto3').__name__)"
+ ),
],
)
def test_low_level_client_blocked(self, code):
_blocked(code, expect_phrase = "Blocked: low-level network module")
+ @pytest.mark.parametrize(
+ "code",
+ [
+ "m = __import__('statistics'); print(m.mean([1, 2]))",
+ (
+ "from importlib import import_module as load; "
+ "print(load('statistics').mean([1, 2]))"
+ ),
+ ],
+ )
+ def test_other_dynamic_imports_stay_available(self, code):
+ _ok(code)
+
class TestHostNormalization:
def test_trailing_dot_treated_same(self):