diff --git a/alfred/app.py b/alfred/app.py index 8280b89..2532054 100644 --- a/alfred/app.py +++ b/alfred/app.py @@ -5,11 +5,12 @@ import logging import os import time import uuid +from typing import Any + from fastapi import FastAPI, HTTPException from fastapi.responses import JSONResponse, StreamingResponse from fastapi.staticfiles import StaticFiles from pydantic import BaseModel, Field, validator -from typing import Any from alfred.agent.agent import Agent from alfred.agent.config import settings @@ -40,7 +41,6 @@ else: ) # Initialize memory context at startup -# Use /data/memory in Docker, fallback to memory_data for local dev storage_dir = os.getenv("MEMORY_STORAGE_DIR", "memory_data") init_memory(storage_dir=storage_dir) logger.info(f"Memory context initialized (storage: {storage_dir})") diff --git a/alfred/application/torrents/search_torrents.py b/alfred/application/torrents/search_torrents.py index daad45e..0b83c11 100644 --- a/alfred/application/torrents/search_torrents.py +++ b/alfred/application/torrents/search_torrents.py @@ -2,7 +2,11 @@ import logging -from alfred.infrastructure.api.knaben import KnabenAPIError, KnabenClient, KnabenNotFoundError +from alfred.infrastructure.api.knaben import ( + KnabenAPIError, + KnabenClient, + KnabenNotFoundError, +) from .dto import SearchTorrentsResponse diff --git a/alfred/infrastructure/api/knaben/client.py b/alfred/infrastructure/api/knaben/client.py index 359de66..acd399d 100644 --- a/alfred/infrastructure/api/knaben/client.py +++ b/alfred/infrastructure/api/knaben/client.py @@ -1,12 +1,13 @@ """Knaben torrent search API client.""" - import logging -import requests -from requests.exceptions import HTTPError, RequestException, Timeout from typing import Any +import requests +from requests.exceptions import HTTPError, RequestException, Timeout + from alfred.agent.config import Settings, settings + from .dto import TorrentResult from .exceptions import KnabenAPIError, KnabenNotFoundError diff --git a/alfred/infrastructure/api/qbittorrent/client.py b/alfred/infrastructure/api/qbittorrent/client.py index 02d3124..b7bf165 100644 --- a/alfred/infrastructure/api/qbittorrent/client.py +++ b/alfred/infrastructure/api/qbittorrent/client.py @@ -1,11 +1,13 @@ """qBittorrent Web API client.""" import logging -import requests -from requests.exceptions import HTTPError, RequestException, Timeout from typing import Any +import requests +from requests.exceptions import HTTPError, RequestException, Timeout + from alfred.agent.config import Settings, settings + from .dto import TorrentInfo from .exceptions import QBittorrentAPIError, QBittorrentAuthError diff --git a/alfred/infrastructure/api/tmdb/client.py b/alfred/infrastructure/api/tmdb/client.py index 208edbc..1ada28d 100644 --- a/alfred/infrastructure/api/tmdb/client.py +++ b/alfred/infrastructure/api/tmdb/client.py @@ -1,12 +1,13 @@ """TMDB (The Movie Database) API client.""" import logging -import requests -from requests.exceptions import HTTPError, RequestException, Timeout from typing import Any +import requests +from requests.exceptions import HTTPError, RequestException, Timeout from alfred.agent.config import Settings, settings + from .dto import MediaResult from .exceptions import ( TMDBAPIError, diff --git a/cli.py b/cli.py index a762bdf..41cf333 100644 --- a/cli.py +++ b/cli.py @@ -179,7 +179,6 @@ def setup() -> None: """Orchestrate initialization.""" is_docker_running() ensure_env() - #mkdir def status() -> None: diff --git a/tests/conftest.py b/tests/conftest.py index 462d701..6326a10 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,13 +3,14 @@ # TODO: Moved directory, should not be necessary anymore but need to check !! # Ajouter le dossier parent (brain) au PYTHONPATH # sys.path.insert(0, str(Path(__file__).parent.parent)) -import pytest import shutil import sys import tempfile from pathlib import Path from unittest.mock import MagicMock, Mock +import pytest + from alfred.infrastructure.persistence import Memory, set_memory diff --git a/tests/test_agent_edge_cases.py b/tests/test_agent_edge_cases.py index 83d94ce..5083684 100644 --- a/tests/test_agent_edge_cases.py +++ b/tests/test_agent_edge_cases.py @@ -1,7 +1,9 @@ """Edge case tests for the Agent.""" -import pytest + from unittest.mock import Mock +import pytest + from alfred.agent.agent import Agent from alfred.infrastructure.persistence import get_memory diff --git a/tests/test_api_edge_cases.py b/tests/test_api_edge_cases.py index 5ffa798..e61c30e 100644 --- a/tests/test_api_edge_cases.py +++ b/tests/test_api_edge_cases.py @@ -10,8 +10,8 @@ class TestChatCompletionsEdgeCases: def test_very_long_message(self, memory): """Should handle very long user message.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app # Patch the agent's LLM directly mock_llm = Mock() @@ -33,8 +33,8 @@ class TestChatCompletionsEdgeCases: def test_unicode_message(self, memory): """Should handle unicode in message.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app mock_llm = Mock() mock_llm.complete.return_value = { @@ -59,8 +59,8 @@ class TestChatCompletionsEdgeCases: def test_special_characters_in_message(self, memory): """Should handle special characters.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app mock_llm = Mock() mock_llm.complete.return_value = {"role": "assistant", "content": "Response"} @@ -187,8 +187,8 @@ class TestChatCompletionsEdgeCases: def test_many_messages(self, memory): """Should handle many messages in conversation.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app mock_llm = Mock() mock_llm.complete.return_value = {"role": "assistant", "content": "Response"} @@ -301,8 +301,8 @@ class TestChatCompletionsEdgeCases: def test_extra_fields_in_request(self, memory): """Should ignore extra fields in request.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app mock_llm = Mock() mock_llm.complete.return_value = {"role": "assistant", "content": "Response"} @@ -325,8 +325,8 @@ class TestChatCompletionsEdgeCases: def test_streaming_with_tool_call(self, memory, real_folder): """Should handle streaming with tool execution.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app from alfred.infrastructure.persistence import get_memory mem = get_memory() @@ -371,8 +371,8 @@ class TestChatCompletionsEdgeCases: def test_concurrent_requests_simulation(self, memory): """Should handle rapid sequential requests.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app mock_llm = Mock() mock_llm.complete.return_value = {"role": "assistant", "content": "Response"} @@ -392,8 +392,8 @@ class TestChatCompletionsEdgeCases: def test_llm_returns_json_in_response(self, memory): """Should handle LLM returning JSON in text response.""" - from alfred.app import app from alfred.agent import agent + from alfred.app import app mock_llm = Mock() mock_llm.complete.return_value = { diff --git a/tests/test_config_critical.py b/tests/test_config_critical.py index 47e8b07..02432d6 100644 --- a/tests/test_config_critical.py +++ b/tests/test_config_critical.py @@ -1,4 +1,5 @@ """Critical tests for configuration validation.""" + import pytest from alfred.agent.config import ConfigurationError, Settings diff --git a/tests/test_config_edge_cases.py b/tests/test_config_edge_cases.py index 01dc150..70fa5e7 100644 --- a/tests/test_config_edge_cases.py +++ b/tests/test_config_edge_cases.py @@ -1,9 +1,10 @@ """Edge case tests for configuration and parameters.""" import os -import pytest from unittest.mock import patch +import pytest + from alfred.agent.config import ConfigurationError, Settings from alfred.agent.parameters import ( REQUIRED_PARAMETERS, diff --git a/tests/test_domain_edge_cases.py b/tests/test_domain_edge_cases.py index 25a618d..a38aa67 100644 --- a/tests/test_domain_edge_cases.py +++ b/tests/test_domain_edge_cases.py @@ -1,7 +1,9 @@ """Edge case tests for domain entities and value objects.""" -import pytest + from datetime import datetime +import pytest + from alfred.domain.movies.entities import Movie from alfred.domain.movies.value_objects import MovieTitle, Quality, ReleaseYear from alfred.domain.shared.exceptions import ValidationError diff --git a/tests/test_memory.py b/tests/test_memory.py index ce83aa3..2ecca6e 100644 --- a/tests/test_memory.py +++ b/tests/test_memory.py @@ -1,7 +1,9 @@ """Tests for the Memory system.""" -import pytest + from datetime import datetime +import pytest + from alfred.infrastructure.persistence import ( EpisodicMemory, LongTermMemory, diff --git a/tests/test_memory_edge_cases.py b/tests/test_memory_edge_cases.py index 356c90e..12d6295 100644 --- a/tests/test_memory_edge_cases.py +++ b/tests/test_memory_edge_cases.py @@ -4,6 +4,7 @@ import json import os import pytest + from alfred.infrastructure.persistence import ( EpisodicMemory, LongTermMemory, diff --git a/tests/test_registry_critical.py b/tests/test_registry_critical.py index 7143849..11f5535 100644 --- a/tests/test_registry_critical.py +++ b/tests/test_registry_critical.py @@ -3,6 +3,7 @@ import inspect import pytest + from alfred.agent.prompts import PromptBuilder from alfred.agent.registry import Tool, _create_tool_from_function, make_tools diff --git a/tests/test_registry_edge_cases.py b/tests/test_registry_edge_cases.py index 10b45f7..952cfad 100644 --- a/tests/test_registry_edge_cases.py +++ b/tests/test_registry_edge_cases.py @@ -1,6 +1,7 @@ """Edge case tests for tool registry.""" import pytest + from alfred.agent.registry import Tool, make_tools diff --git a/tests/test_tools_edge_cases.py b/tests/test_tools_edge_cases.py index ac24aa2..6ccc1e4 100644 --- a/tests/test_tools_edge_cases.py +++ b/tests/test_tools_edge_cases.py @@ -1,7 +1,9 @@ """Edge case tests for tools.""" -import pytest + from unittest.mock import Mock, patch +import pytest + from alfred.agent.tools import api as api_tools from alfred.agent.tools import filesystem as fs_tools from alfred.infrastructure.persistence import get_memory diff --git a/tests/test_tools_filesystem.py b/tests/test_tools_filesystem.py index 21c8836..8245594 100644 --- a/tests/test_tools_filesystem.py +++ b/tests/test_tools_filesystem.py @@ -1,7 +1,9 @@ """Tests for filesystem tools.""" -import pytest + from pathlib import Path +import pytest + from alfred.agent.tools import filesystem as fs_tools from alfred.infrastructure.persistence import get_memory