From 52ee13a50bc27a3f612c6c1661e39d8de39e6715 Mon Sep 17 00:00:00 2001 From: "sonarqube-agent[bot]" <210722872+sonarqube-agent[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 06:24:42 +0000 Subject: [PATCH 1/2] fix: Address SonarQube issue Fixed issues: - AZ42C_d7wWSCt-IKiyr9 for python:S5443 rule Generated by SonarQube Agent (task: e9b21042-338c-44a7-ab1a-411b96f194d4) --- studio/backend/tests/test_gpu_selection.py | 61 ++++++++++++---------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/studio/backend/tests/test_gpu_selection.py b/studio/backend/tests/test_gpu_selection.py index a1fe5653efe..4fb45ec3f14 100644 --- a/studio/backend/tests/test_gpu_selection.py +++ b/studio/backend/tests/test_gpu_selection.py @@ -5,6 +5,7 @@ import importlib.util import os import re +import tempfile import unittest from pathlib import Path from types import SimpleNamespace @@ -724,38 +725,40 @@ def test_inference_route_rejects_gpu_ids_for_gguf(self): "routes/inference.py", ) request = LoadRequest(model_path = "unsloth/test.gguf", gpu_ids = [0, 1]) - model_config = SimpleNamespace( - is_gguf = True, - is_lora = False, - gguf_hf_repo = None, - gguf_file = "/tmp/test.gguf", - gguf_mmproj_file = None, - gguf_variant = None, - identifier = "unsloth/test.gguf", - display_name = "unsloth/test.gguf", - is_vision = False, - is_audio = False, - audio_type = None, - has_audio_input = False, - ) - with patch.object( - inference_route.ModelConfig, - "from_identifier", - return_value = model_config, - ): - with self.assertRaises(HTTPException) as exc_info: - asyncio.run( - inference_route.load_model( - request, - SimpleNamespace( - app = SimpleNamespace( - state = SimpleNamespace(llama_parallel_slots = 1), + with tempfile.TemporaryDirectory() as temp_dir: + model_config = SimpleNamespace( + is_gguf = True, + is_lora = False, + gguf_hf_repo = None, + gguf_file = str(Path(temp_dir) / "test.gguf"), + gguf_mmproj_file = None, + gguf_variant = None, + identifier = "unsloth/test.gguf", + display_name = "unsloth/test.gguf", + is_vision = False, + is_audio = False, + audio_type = None, + has_audio_input = False, + ) + + with patch.object( + inference_route.ModelConfig, + "from_identifier", + return_value = model_config, + ): + with self.assertRaises(HTTPException) as exc_info: + asyncio.run( + inference_route.load_model( + request, + SimpleNamespace( + app = SimpleNamespace( + state = SimpleNamespace(llama_parallel_slots = 1), + ), ), - ), - current_subject = "test-user", + current_subject = "test-user", + ) ) - ) self.assertEqual(exc_info.exception.status_code, 400) self.assertIn("GGUF", exc_info.exception.detail) From d948bc525a01fa2d5ec02e3a5c92dfa1a6e31ee7 Mon Sep 17 00:00:00 2001 From: "sonarqube-agent[bot]" <210722872+sonarqube-agent[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 06:29:10 +0000 Subject: [PATCH 2/2] fix: Address 5 SonarQube issues Fixed issues: - AZ_-8y6Sis02fnzkS84Q for python:S5778 rule - AZ_-8y6Sis02fnzkS84O for python:S5778 rule - AZ_-8y6Sis02fnzkS84P for python:S5778 rule - AZ_-8y6Sis02fnzkS84N for python:S5778 rule - AZ_-8y6Sis02fnzkS84R for python:S5778 rule Generated by SonarQube Agent (task: 8edd8151-1573-4f4b-8281-5e45d916e49e) --- studio/backend/tests/test_gpu_selection.py | 94 ++++++++++++---------- 1 file changed, 53 insertions(+), 41 deletions(-) diff --git a/studio/backend/tests/test_gpu_selection.py b/studio/backend/tests/test_gpu_selection.py index 4fb45ec3f14..467d7469f30 100644 --- a/studio/backend/tests/test_gpu_selection.py +++ b/studio/backend/tests/test_gpu_selection.py @@ -747,18 +747,19 @@ def test_inference_route_rejects_gpu_ids_for_gguf(self): "from_identifier", return_value = model_config, ): + request_context = SimpleNamespace( + app = SimpleNamespace( + state = SimpleNamespace(llama_parallel_slots = 1), + ), + ) + load_model_coro = inference_route.load_model( + request, + request_context, + current_subject = "test-user", + ) + with self.assertRaises(HTTPException) as exc_info: - asyncio.run( - inference_route.load_model( - request, - SimpleNamespace( - app = SimpleNamespace( - state = SimpleNamespace(llama_parallel_slots = 1), - ), - ), - current_subject = "test-user", - ) - ) + asyncio.run(load_model_coro) self.assertEqual(exc_info.exception.status_code, 400) self.assertIn("GGUF", exc_info.exception.detail) @@ -797,10 +798,11 @@ def start_training(self, **kwargs): return_value = SimpleNamespace(current_checkpoint = None), ), ): + training_task = training_route.start_training( + request, current_subject = "test-user" + ) with self.assertRaises(HTTPException) as exc_info: - asyncio.run( - training_route.start_training(request, current_subject = "test-user") - ) + asyncio.run(training_task) self.assertEqual(exc_info.exception.status_code, 400) self.assertIn("gpu_ids [99]", exc_info.exception.detail) @@ -828,6 +830,8 @@ def start_training(self, **kwargs): "Invalid gpu_ids [1]: explicit physical GPU IDs are unsupported when CUDA_VISIBLE_DEVICES uses UUID/MIG entries" ) + coroutine = training_route.start_training(request, current_subject = "test-user") + with ( patch.object( training_route, "get_training_backend", return_value = DummyBackend() @@ -842,9 +846,7 @@ def start_training(self, **kwargs): ), ): with self.assertRaises(HTTPException) as exc_info: - asyncio.run( - training_route.start_training(request, current_subject = "test-user") - ) + asyncio.run(coroutine) self.assertEqual(exc_info.exception.status_code, 400) self.assertIn("UUID/MIG", exc_info.exception.detail) @@ -874,6 +876,22 @@ class DummyInferenceBackend: def load_model(self, **kwargs): raise ValueError("Invalid gpu_ids [99]") + route_request = SimpleNamespace( + app = SimpleNamespace( + state = SimpleNamespace(llama_parallel_slots = 1), + ), + ) + + async def load_model_call(): + await inference_route.load_model( + request, + route_request, + current_subject = "test-user", + ) + + def run_load_model_call(): + asyncio.run(load_model_call()) + with ( patch.object( inference_route.ModelConfig, @@ -895,18 +913,7 @@ def load_model(self, **kwargs): return_value = SimpleNamespace(current_checkpoint = None), ), ): - with self.assertRaises(HTTPException) as exc_info: - asyncio.run( - inference_route.load_model( - request, - SimpleNamespace( - app = SimpleNamespace( - state = SimpleNamespace(llama_parallel_slots = 1), - ), - ), - current_subject = "test-user", - ) - ) + exc_info = self.assertRaises(HTTPException, run_load_model_call) self.assertEqual(exc_info.exception.status_code, 400) self.assertIn("gpu_ids [99]", exc_info.exception.detail) @@ -938,6 +945,22 @@ def load_model(self, **kwargs): "Invalid gpu_ids [1]: explicit physical GPU IDs are unsupported when CUDA_VISIBLE_DEVICES uses UUID/MIG entries" ) + route_request = SimpleNamespace( + app = SimpleNamespace( + state = SimpleNamespace(llama_parallel_slots = 1), + ), + ) + + async def load_model_call(): + await inference_route.load_model( + request, + route_request, + current_subject = "test-user", + ) + + def run_load_model_call(): + asyncio.run(load_model_call()) + with ( patch.object( inference_route.ModelConfig, @@ -959,18 +982,7 @@ def load_model(self, **kwargs): return_value = SimpleNamespace(current_checkpoint = None), ), ): - with self.assertRaises(HTTPException) as exc_info: - asyncio.run( - inference_route.load_model( - request, - SimpleNamespace( - app = SimpleNamespace( - state = SimpleNamespace(llama_parallel_slots = 1), - ), - ), - current_subject = "test-user", - ) - ) + exc_info = self.assertRaises(HTTPException, run_load_model_call) self.assertEqual(exc_info.exception.status_code, 400) self.assertIn("UUID/MIG", exc_info.exception.detail)