From d5a7728f8b75ff129940760b655625f28ba3da84 Mon Sep 17 00:00:00 2001 From: Mathias Scheider Date: Fri, 2 Oct 2026 10:13:59 +0200 Subject: [PATCH] black and ruff --- src/photools3/llm_session.py | 3 +-- test/conftest.py | 3 +++ test/test_llm_session_integration.py | 9 ++++++--- test/test_llm_session_mocked.py | 19 ++++++++++--------- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/photools3/llm_session.py b/src/photools3/llm_session.py index 2310135..921cc0c 100644 --- a/src/photools3/llm_session.py +++ b/src/photools3/llm_session.py @@ -1,9 +1,8 @@ import json import re -from openai import OpenAI import openai -from openai.types.chat import ChatCompletion +from openai import OpenAI from photools3.models import ( LlmMessageContent, diff --git a/test/conftest.py b/test/conftest.py index 2c16a29..07a817d 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,12 +1,15 @@ import pytest + from photools3.llm_session import LlmSession from photools3.photo import Photo from test.test_photo import PATHS_DNG_EXAMPLES + @pytest.fixture def test_photo(): return Photo(PATHS_DNG_EXAMPLES[0]) + @pytest.fixture def llm_session(): return LlmSession( diff --git a/test/test_llm_session_integration.py b/test/test_llm_session_integration.py index 270c4c7..f2f636c 100644 --- a/test/test_llm_session_integration.py +++ b/test/test_llm_session_integration.py @@ -1,8 +1,11 @@ import pytest -from photools3.llm_session import LlmSession -from photools3.photo import Photo -@pytest.mark.skipif(not LlmSession(system_prompt="").is_api_reachable(), reason="API not available") +from photools3.llm_session import LlmSession + + +@pytest.mark.skipif( + not LlmSession(system_prompt="").is_api_reachable(), reason="API not available" +) def test_llm_session(llm_session, test_photo): result = llm_session.call( prompt="keywords for the attached picture", photos=[test_photo] diff --git a/test/test_llm_session_mocked.py b/test/test_llm_session_mocked.py index 69c3560..de1c9f3 100644 --- a/test/test_llm_session_mocked.py +++ b/test/test_llm_session_mocked.py @@ -1,8 +1,7 @@ -import pytest from unittest.mock import MagicMock, patch + from photools3.llm_session import LlmSession -from photools3.photo import Photo -from test.test_photo import PATHS_DNG_EXAMPLES + def test_llm_session_mocked(test_photo): # We want to mock OpenAI client's chat.completions.create @@ -10,22 +9,24 @@ def test_llm_session_mocked(test_photo): # Setup the mock response structure mock_client = MagicMock() mocked_openai.return_value = mock_client - + # Mock the models list to return a proper object with an ID string # This prevents Pydantic ValidationError when LlmSession tries to use model_id mock_model = MagicMock() mock_model.id = "gpt-4o" mock_client.models.list.return_value.data = [mock_model] - + # Create a response object: response.choices[0].message.content mock_response = MagicMock() mock_choice = MagicMock() mock_message = MagicMock() - - mock_message.content = '{"caption": "A beautiful sunset", "tags": ["sunset", "nature"]}' + + mock_message.content = ( + '{"caption": "A beautiful sunset", "tags": ["sunset", "nature"]}' + ) mock_choice.message = mock_message mock_response.choices = [mock_choice] - + # Configure the client to return our mock response mock_client.chat.completions.create.return_value = mock_response @@ -41,6 +42,6 @@ def test_llm_session_mocked(test_photo): assert result["caption"] == "A beautiful sunset" assert "sunset" in result["tags"] assert "nature" in result["tags"] - + # Verify that the mock was called assert mock_client.chat.completions.create.called