FINAL COMMIT BEFORE REWRITE

This commit is contained in:
2026-05-26 21:45:11 +02:00
parent 42fa6139ed
commit 745dec39f5
264 changed files with 311 additions and 311 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ import tempfile
import pytest
from alfred.infrastructure.persistence import Memory, set_memory
from alfred.infrastructure.persistence_TO_CHECK import Memory, set_memory
@pytest.fixture
+3 -3
View File
@@ -6,9 +6,9 @@ from datetime import UTC, datetime
import pytest
from alfred.domain.releases.entities import MovieRelease, TrackProfile
from alfred.domain.shared.media import AudioTrack
from alfred.domain.shared.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.releases_TO_CHECK.entities import MovieRelease, TrackProfile
from alfred.domain.shared_TO_CHECK.media import AudioTrack
from alfred.domain.shared_TO_CHECK.value_objects import FilePath, ImdbId, TmdbId
@pytest.fixture
+5 -5
View File
@@ -12,16 +12,16 @@ from pathlib import Path
import pytest
from alfred.application.movies import MovieRescanFailed, rescan_movie
from alfred.domain.shared.media import (
from alfred.application.movies_TO_CHECK import MovieRescanFailed, rescan_movie
from alfred.domain.shared_TO_CHECK.media import (
AudioTrack,
MediaInfo,
SubtitleTrack,
VideoTrack,
)
from alfred.domain.shared.value_objects import ImdbId, TmdbId
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.persistence.dot_alfred.v2.repository import (
from alfred.domain.shared_TO_CHECK.value_objects import ImdbId, TmdbId
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.repository import (
SIDECAR_FILENAME,
DotAlfredMovieReleaseRepository,
)
+4 -4
View File
@@ -8,10 +8,10 @@ from datetime import timedelta
import pytest
from alfred.application.exceptions import MovieNotFoundInLibrary
from alfred.application.movies.sync import sync_movie
from alfred.domain.shared.value_objects import TmdbId
from alfred.infrastructure.api.tmdb.dto import TmdbMovieInfo
from alfred.infrastructure.persistence.dot_alfred.v2.repository import (
from alfred.application.movies_TO_CHECK.sync import sync_movie
from alfred.domain.shared_TO_CHECK.value_objects import TmdbId
from alfred.infrastructure.api_TO_CHECK.tmdb.dto import TmdbMovieInfo
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.repository import (
DotAlfredMovieLibraryIndex,
DotAlfredMovieReleaseRepository,
)
+2 -2
View File
@@ -20,8 +20,8 @@ from unittest.mock import MagicMock
import pytest
from alfred.application.torrents.add_torrent import AddTorrentUseCase
from alfred.infrastructure.api.qbittorrent.exceptions import (
from alfred.application.torrents_TO_CHECK.add_torrent import AddTorrentUseCase
from alfred.infrastructure.api_TO_CHECK.qbittorrent.exceptions import (
QBittorrentAPIError,
QBittorrentAuthError,
)
+3 -3
View File
@@ -63,7 +63,7 @@ class TestCreateSeedLinksHappyPath:
def test_ok_when_torrent_folder_configured(
self, use_case, seed_env, memory_configured
):
from alfred.infrastructure.persistence import get_memory
from alfred.infrastructure.persistence_TO_CHECK import get_memory
mem = get_memory()
lib_video, dl, torrents = seed_env
@@ -78,7 +78,7 @@ class TestCreateSeedLinksHappyPath:
assert result.copied_count > 0
def test_to_dict_ok(self, use_case, seed_env, memory_configured):
from alfred.infrastructure.persistence import get_memory
from alfred.infrastructure.persistence_TO_CHECK import get_memory
mem = get_memory()
lib_video, dl, torrents = seed_env
@@ -115,7 +115,7 @@ class TestCreateSeedLinksErrors:
def test_error_delegates_to_file_manager(self, memory_configured):
"""FileManager errors are propagated correctly."""
from alfred.infrastructure.persistence import get_memory
from alfred.infrastructure.persistence_TO_CHECK import get_memory
mem = get_memory()
# torrent already configured by memory_configured fixture
+3 -3
View File
@@ -18,9 +18,9 @@ from pathlib import Path
import pytest
from alfred.application.release.detect_media_type import detect_media_type
from alfred.domain.releases.parser.services import parse_release
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.application.release_TO_CHECK.detect_media_type import detect_media_type
from alfred.domain.releases_TO_CHECK.parser.services import parse_release
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
+3 -3
View File
@@ -18,10 +18,10 @@ Uses real ``ParsedRelease`` / ``MediaInfo`` instances — no mocking needed.
from __future__ import annotations
from alfred.application.release.enrich_from_probe import enrich_from_probe
from alfred.application.release_TO_CHECK.enrich_from_probe import enrich_from_probe
from alfred.domain.release.value_objects import ParsedRelease
from alfred.domain.shared.media import AudioTrack, MediaInfo, VideoTrack
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.domain.shared_TO_CHECK.media import AudioTrack, MediaInfo, VideoTrack
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
+3 -3
View File
@@ -9,9 +9,9 @@ from __future__ import annotations
from pathlib import Path
from alfred.application.release import InspectedResult, inspect_release
from alfred.domain.shared.media import AudioTrack, MediaInfo, VideoTrack
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.application.release_TO_CHECK import InspectedResult, inspect_release
from alfred.domain.shared_TO_CHECK.media import AudioTrack, MediaInfo, VideoTrack
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
+3 -3
View File
@@ -40,9 +40,9 @@ from alfred.application.filesystem.manage_subtitles import (
_to_imdb_id,
_to_unresolved_dto,
)
from alfred.application.subtitles.placer import PlacedTrack, PlaceResult
from alfred.domain.subtitles.entities import MediaSubtitleMetadata, SubtitleScanResult
from alfred.domain.subtitles.value_objects import (
from alfred.application.subtitles_TO_CHECK.placer import PlacedTrack, PlaceResult
from alfred.domain.subtitles_TO_CHECK.entities import MediaSubtitleMetadata, SubtitleScanResult
from alfred.domain.subtitles_TO_CHECK.value_objects import (
ScanStrategy,
SubtitleFormat,
SubtitleLanguage,
@@ -44,8 +44,8 @@ from alfred.application.filesystem.resolve_destination import (
from alfred.application.filesystem.resolve_destination import (
resolve_series_destination as _resolve_series_destination,
)
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.persistence import Memory, set_memory
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.persistence_TO_CHECK import Memory, set_memory
_KB = YamlReleaseKnowledge()
@@ -390,7 +390,7 @@ class _StubProber:
def _stereo_movie_info():
"""A MediaInfo that fills quality+codec when the release name omits them."""
from alfred.domain.shared.media import AudioTrack, MediaInfo, VideoTrack
from alfred.domain.shared_TO_CHECK.media import AudioTrack, MediaInfo, VideoTrack
return MediaInfo(
video_tracks=(VideoTrack(index=0, codec="hevc", width=1920, height=1080),),
+5 -5
View File
@@ -22,11 +22,11 @@ from unittest.mock import MagicMock
import pytest
from alfred.application.movies.search_movie import SearchMovieUseCase
from alfred.domain.movies.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared.value_objects import TmdbId
from alfred.infrastructure.api.tmdb.dto import TmdbMovieSearchResult
from alfred.infrastructure.api.tmdb.exceptions import (
from alfred.application.movies_TO_CHECK.search_movie import SearchMovieUseCase
from alfred.domain.movies_TO_CHECK.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared_TO_CHECK.value_objects import TmdbId
from alfred.infrastructure.api_TO_CHECK.tmdb.dto import TmdbMovieSearchResult
from alfred.infrastructure.api_TO_CHECK.tmdb.exceptions import (
TMDBAPIError,
TMDBConfigurationError,
)
+4 -4
View File
@@ -11,10 +11,10 @@ from unittest.mock import MagicMock
import pytest
from alfred.application.tv_shows.search_show import SearchShowUseCase
from alfred.domain.shared.value_objects import TmdbId
from alfred.infrastructure.api.tmdb.dto import TmdbShowSearchResult
from alfred.infrastructure.api.tmdb.exceptions import (
from alfred.application.tv_shows_TO_CHECK.search_show import SearchShowUseCase
from alfred.domain.shared_TO_CHECK.value_objects import TmdbId
from alfred.infrastructure.api_TO_CHECK.tmdb.dto import TmdbShowSearchResult
from alfred.infrastructure.api_TO_CHECK.tmdb.exceptions import (
TMDBAPIError,
TMDBConfigurationError,
)
+3 -3
View File
@@ -21,9 +21,9 @@ from unittest.mock import MagicMock
import pytest
from alfred.application.torrents.search_torrents import SearchTorrentsUseCase
from alfred.infrastructure.api.knaben.dto import TorrentResult
from alfred.infrastructure.api.knaben.exceptions import (
from alfred.application.torrents_TO_CHECK.search_torrents import SearchTorrentsUseCase
from alfred.infrastructure.api_TO_CHECK.knaben.dto import TorrentResult
from alfred.infrastructure.api_TO_CHECK.knaben.exceptions import (
KnabenAPIError,
KnabenNotFoundError,
)
+3 -3
View File
@@ -21,14 +21,14 @@ from unittest.mock import patch
import pytest
from alfred.application.subtitles.placer import (
from alfred.application.subtitles_TO_CHECK.placer import (
PlacedTrack,
PlaceResult,
SubtitlePlacer,
_build_dest_name,
)
from alfred.domain.subtitles.entities import SubtitleScanResult
from alfred.domain.subtitles.value_objects import (
from alfred.domain.subtitles_TO_CHECK.entities import SubtitleScanResult
from alfred.domain.subtitles_TO_CHECK.value_objects import (
SubtitleFormat,
SubtitleLanguage,
SubtitleType,
+2 -2
View File
@@ -4,11 +4,11 @@ from __future__ import annotations
from pathlib import Path
from alfred.application.release.supported_media import (
from alfred.application.release_TO_CHECK.supported_media import (
find_main_video,
is_supported_video,
)
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
+4 -4
View File
@@ -11,15 +11,15 @@ from datetime import UTC, datetime
import pytest
from alfred.domain.releases.entities import (
from alfred.domain.releases_TO_CHECK.entities import (
EpisodeRelease,
SeasonRelease,
SeriesRelease,
TrackProfile,
)
from alfred.domain.releases.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared.media import AudioTrack
from alfred.domain.shared.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.releases_TO_CHECK.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared_TO_CHECK.media import AudioTrack
from alfred.domain.shared_TO_CHECK.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.tv_shows.value_objects import EpisodeNumber, SeasonNumber
+6 -6
View File
@@ -10,19 +10,19 @@ from __future__ import annotations
from pathlib import Path
from alfred.application.tv_shows import rescan_show
from alfred.domain.releases.value_objects import ReleaseMode
from alfred.domain.shared.media import (
from alfred.application.tv_shows_TO_CHECK import rescan_show
from alfred.domain.releases_TO_CHECK.value_objects import ReleaseMode
from alfred.domain.shared_TO_CHECK.media import (
AudioTrack,
MediaInfo,
SubtitleTrack,
VideoTrack,
)
from alfred.domain.shared.value_objects import ImdbId, TmdbId
from alfred.domain.shared_TO_CHECK.value_objects import ImdbId, TmdbId
from alfred.domain.tv_shows.value_objects import SeasonNumber
from alfred.infrastructure.filesystem.scanner import PathlibFilesystemScanner
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.persistence.dot_alfred.v2.repository import (
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.repository import (
SIDECAR_FILENAME,
DotAlfredSeriesReleaseRepository,
)
+4 -4
View File
@@ -18,10 +18,10 @@ from datetime import UTC, datetime, timedelta
import pytest
from alfred.application.exceptions import ShowNotFoundInLibrary
from alfred.application.tv_shows.sync import sync_show
from alfred.domain.shared.value_objects import TmdbId
from alfred.infrastructure.api.tmdb.dto import TmdbSeasonInfo, TmdbShowInfo
from alfred.infrastructure.persistence.dot_alfred.v2.repository import (
from alfred.application.tv_shows_TO_CHECK.sync import sync_show
from alfred.domain.shared_TO_CHECK.value_objects import TmdbId
from alfred.infrastructure.api_TO_CHECK.tmdb.dto import TmdbSeasonInfo, TmdbShowInfo
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.repository import (
DotAlfredSeriesReleaseRepository,
DotAlfredTVShowLibraryIndex,
)
+3 -3
View File
@@ -2,10 +2,10 @@
from __future__ import annotations
from alfred.application.tv_shows.walker import walk_show
from alfred.domain.releases.value_objects import ReleaseMode
from alfred.application.tv_shows_TO_CHECK.walker import walk_show
from alfred.domain.releases_TO_CHECK.value_objects import ReleaseMode
from alfred.infrastructure.filesystem.scanner import PathlibFilesystemScanner
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
_SCANNER = PathlibFilesystemScanner()
+1 -1
View File
@@ -26,7 +26,7 @@ from unittest.mock import MagicMock, Mock
import pytest
from alfred.infrastructure.persistence import Memory, set_memory
from alfred.infrastructure.persistence_TO_CHECK import Memory, set_memory
from alfred.settings import settings
+3 -3
View File
@@ -11,14 +11,14 @@ can't quietly drop EASY without us noticing.
from __future__ import annotations
from alfred.domain.releases.parser import TokenRole
from alfred.domain.releases.parser import (
from alfred.domain.releases_TO_CHECK.parser import TokenRole
from alfred.domain.releases_TO_CHECK.parser import (
_detect_group,
annotate,
assemble,
tokenize,
)
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
@@ -8,9 +8,9 @@ is implemented and the fixtures-based suite switches over.
from __future__ import annotations
from alfred.domain.releases.parser import Token, TokenRole
from alfred.domain.releases.parser import strip_site_tag, tokenize
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.domain.releases_TO_CHECK.parser import Token, TokenRole
from alfred.domain.releases_TO_CHECK.parser import strip_site_tag, tokenize
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
@@ -10,23 +10,23 @@ from __future__ import annotations
import pytest
from alfred.domain.releases.parser import (
from alfred.domain.releases_TO_CHECK.parser import (
Road,
collect_missing_critical,
collect_unknown_tokens,
compute_score,
decide_road,
)
from alfred.domain.releases.parser.tokens import Token, TokenRole
from alfred.domain.releases.parser.services import parse_release
from alfred.domain.releases_TO_CHECK.parser.tokens import Token, TokenRole
from alfred.domain.releases_TO_CHECK.parser.services import parse_release
from alfred.domain.release.value_objects import (
MediaTypeToken,
ParsedRelease,
ParseReport,
TokenizationRoute,
)
from alfred.domain.shared.exceptions import ValidationError
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.domain.shared_TO_CHECK.exceptions import ValidationError
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
+5 -5
View File
@@ -2,14 +2,14 @@
import pytest
from alfred.domain.releases.builders import (
from alfred.domain.releases_TO_CHECK.builders import (
SeasonReleaseBuilder,
SeriesReleaseBuilder,
)
from alfred.domain.releases.entities import EpisodeRelease, TrackProfile
from alfred.domain.releases.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared.exceptions import ValidationError
from alfred.domain.shared.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.releases_TO_CHECK.entities import EpisodeRelease, TrackProfile
from alfred.domain.releases_TO_CHECK.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared_TO_CHECK.exceptions import ValidationError
from alfred.domain.shared_TO_CHECK.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.tv_shows.value_objects import EpisodeNumber, SeasonNumber
+5 -5
View File
@@ -5,17 +5,17 @@ from datetime import UTC, datetime
import pytest
from alfred.domain.releases.entities import (
from alfred.domain.releases_TO_CHECK.entities import (
EpisodeRelease,
MovieRelease,
SeasonRelease,
SeriesRelease,
TrackProfile,
)
from alfred.domain.releases.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared.exceptions import ValidationError
from alfred.domain.shared.media import AudioTrack, SubtitleTrack
from alfred.domain.shared.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.releases_TO_CHECK.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared_TO_CHECK.exceptions import ValidationError
from alfred.domain.shared_TO_CHECK.media import AudioTrack, SubtitleTrack
from alfred.domain.shared_TO_CHECK.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.tv_shows.value_objects import EpisodeNumber, SeasonNumber
_ADDED_AT = datetime(2026, 5, 25, 8, 30, 0, tzinfo=UTC)
+2 -2
View File
@@ -2,8 +2,8 @@
import pytest
from alfred.domain.releases.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared.exceptions import ValidationError
from alfred.domain.releases_TO_CHECK.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared_TO_CHECK.exceptions import ValidationError
from alfred.domain.tv_shows.value_objects import EpisodeNumber
+1 -1
View File
@@ -15,7 +15,7 @@ from __future__ import annotations
import pytest
from alfred.domain.shared.media import AudioTrack, MediaInfo, SubtitleTrack, VideoTrack
from alfred.domain.shared_TO_CHECK.media import AudioTrack, MediaInfo, SubtitleTrack, VideoTrack
class TestTracks:
+2 -2
View File
@@ -18,9 +18,9 @@ from __future__ import annotations
import pytest
from alfred.domain.releases.parser.services import parse_release
from alfred.domain.releases_TO_CHECK.parser.services import parse_release
from alfred.domain.release.value_objects import ParsedRelease
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
+2 -2
View File
@@ -18,8 +18,8 @@ from dataclasses import asdict
import pytest
from alfred.domain.releases.parser.services import parse_release
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.domain.releases_TO_CHECK.parser.services import parse_release
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
from tests.fixtures.releases.conftest import ReleaseFixture, discover_fixtures
_KB = YamlReleaseKnowledge()
+2 -2
View File
@@ -4,8 +4,8 @@ from pathlib import Path
import pytest
from alfred.domain.shared.exceptions import ValidationError
from alfred.domain.shared.value_objects import FilePath, FileSize, ImdbId, TmdbId
from alfred.domain.shared_TO_CHECK.exceptions import ValidationError
from alfred.domain.shared_TO_CHECK.value_objects import FilePath, FileSize, ImdbId, TmdbId
# ---------------------------------------------------------------------------
# ImdbId
+6 -6
View File
@@ -22,15 +22,15 @@ from unittest.mock import patch
import pytest
from alfred.domain.shared import FileEntry
from alfred.domain.subtitles.entities import SubtitleScanResult
from alfred.domain.subtitles.services.identifier import (
from alfred.domain.shared_TO_CHECK import FileEntry
from alfred.domain.subtitles_TO_CHECK.entities import SubtitleScanResult
from alfred.domain.subtitles_TO_CHECK.services.identifier import (
SubtitleIdentifier,
_count_entries,
_tokenize,
_tokenize_suffix,
)
from alfred.domain.subtitles.value_objects import (
from alfred.domain.subtitles_TO_CHECK.value_objects import (
ScanStrategy,
SubtitleLanguage,
SubtitlePattern,
@@ -38,8 +38,8 @@ from alfred.domain.subtitles.value_objects import (
TypeDetectionMethod,
)
from alfred.infrastructure.filesystem.scanner import PathlibFilesystemScanner
from alfred.infrastructure.knowledge.subtitles.base import SubtitleKnowledgeBase
from alfred.infrastructure.probe.ffprobe_prober import FfprobeMediaProber
from alfred.infrastructure.knowledge_TO_CHECK.subtitles.base import SubtitleKnowledgeBase
from alfred.infrastructure.probe_TO_CHECK.ffprobe_prober import FfprobeMediaProber
def _file_entry(path) -> FileEntry:
+4 -4
View File
@@ -19,14 +19,14 @@ from pathlib import Path
import pytest
from alfred.domain.subtitles.value_objects import (
from alfred.domain.subtitles_TO_CHECK.value_objects import (
ScanStrategy,
SubtitleType,
TypeDetectionMethod,
)
from alfred.infrastructure.knowledge.subtitles import loader as loader_mod
from alfred.infrastructure.knowledge.subtitles.base import SubtitleKnowledgeBase
from alfred.infrastructure.knowledge.subtitles.loader import KnowledgeLoader, _merge
from alfred.infrastructure.knowledge_TO_CHECK.subtitles import loader as loader_mod
from alfred.infrastructure.knowledge_TO_CHECK.subtitles.base import SubtitleKnowledgeBase
from alfred.infrastructure.knowledge_TO_CHECK.subtitles.loader import KnowledgeLoader, _merge
# --------------------------------------------------------------------------- #
# _merge — pure dict merger #
+3 -3
View File
@@ -18,9 +18,9 @@ from __future__ import annotations
import pytest
from alfred.domain.subtitles.entities import SubtitleScanResult
from alfred.domain.subtitles.services.matcher import SubtitleMatcher
from alfred.domain.subtitles.value_objects import (
from alfred.domain.subtitles_TO_CHECK.entities import SubtitleScanResult
from alfred.domain.subtitles_TO_CHECK.services.matcher import SubtitleMatcher
from alfred.domain.subtitles_TO_CHECK.value_objects import (
SubtitleFormat,
SubtitleLanguage,
SubtitleMatchingRules,
@@ -25,10 +25,10 @@ from unittest.mock import patch
import pytest
from alfred.domain.subtitles.services.pattern_detector import PatternDetector
from alfred.domain.subtitles_TO_CHECK.services.pattern_detector import PatternDetector
from alfred.infrastructure.filesystem.scanner import PathlibFilesystemScanner
from alfred.infrastructure.knowledge.subtitles.base import SubtitleKnowledgeBase
from alfred.infrastructure.probe.ffprobe_prober import FfprobeMediaProber
from alfred.infrastructure.knowledge_TO_CHECK.subtitles.base import SubtitleKnowledgeBase
from alfred.infrastructure.probe_TO_CHECK.ffprobe_prober import FfprobeMediaProber
@pytest.fixture(scope="module")
+4 -4
View File
@@ -23,10 +23,10 @@ from pathlib import Path
import pytest
from alfred.domain.subtitles.aggregates import SubtitleRuleSet
from alfred.domain.subtitles.entities import MediaSubtitleMetadata, SubtitleScanResult
from alfred.domain.subtitles.services.utils import available_subtitles
from alfred.domain.subtitles.value_objects import (
from alfred.domain.subtitles_TO_CHECK.aggregates import SubtitleRuleSet
from alfred.domain.subtitles_TO_CHECK.entities import MediaSubtitleMetadata, SubtitleScanResult
from alfred.domain.subtitles_TO_CHECK.services.utils import available_subtitles
from alfred.domain.subtitles_TO_CHECK.value_objects import (
RuleScope,
RuleScopeLevel,
SubtitleFormat,
+2 -2
View File
@@ -32,8 +32,8 @@ import dataclasses
import pytest
from alfred.domain.shared.exceptions import ValidationError
from alfred.domain.shared.value_objects import ImdbId, TmdbId
from alfred.domain.shared_TO_CHECK.exceptions import ValidationError
from alfred.domain.shared_TO_CHECK.value_objects import ImdbId, TmdbId
from alfred.domain.tv_shows.builders import SeasonBuilder, TVShowBuilder
from alfred.domain.tv_shows.entities import Episode, Season, TVShow
from alfred.domain.tv_shows.value_objects import (
@@ -19,8 +19,8 @@ from unittest.mock import MagicMock, patch
import pytest
from requests.exceptions import HTTPError, RequestException, Timeout
from alfred.infrastructure.api.knaben.client import KnabenClient
from alfred.infrastructure.api.knaben.exceptions import (
from alfred.infrastructure.api_TO_CHECK.knaben.client import KnabenClient
from alfred.infrastructure.api_TO_CHECK.knaben.exceptions import (
KnabenAPIError,
KnabenNotFoundError,
)
@@ -30,9 +30,9 @@ from unittest.mock import MagicMock, patch
import pytest
from requests.exceptions import HTTPError, RequestException, Timeout
from alfred.infrastructure.api.qbittorrent.client import QBittorrentClient
from alfred.infrastructure.api.qbittorrent.dto import TorrentInfo
from alfred.infrastructure.api.qbittorrent.exceptions import (
from alfred.infrastructure.api_TO_CHECK.qbittorrent.client import QBittorrentClient
from alfred.infrastructure.api_TO_CHECK.qbittorrent.dto import TorrentInfo
from alfred.infrastructure.api_TO_CHECK.qbittorrent.exceptions import (
QBittorrentAPIError,
QBittorrentAuthError,
)
+4 -4
View File
@@ -24,11 +24,11 @@ from unittest.mock import MagicMock, patch
import pytest
from requests.exceptions import HTTPError, RequestException, Timeout
from alfred.domain.movies.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared.value_objects import ImdbId, TmdbId
from alfred.domain.movies_TO_CHECK.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared_TO_CHECK.value_objects import ImdbId, TmdbId
from alfred.domain.tv_shows.value_objects import ShowStatus
from alfred.infrastructure.api.tmdb.client import TMDBClient
from alfred.infrastructure.api.tmdb.exceptions import (
from alfred.infrastructure.api_TO_CHECK.tmdb.client import TMDBClient
from alfred.infrastructure.api_TO_CHECK.tmdb.exceptions import (
TMDBAPIError,
TMDBConfigurationError,
TMDBNotFoundError,
+3 -3
View File
@@ -12,10 +12,10 @@ from datetime import date
import pytest
from alfred.domain.movies.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared.value_objects import ImdbId, TmdbId
from alfred.domain.movies_TO_CHECK.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared_TO_CHECK.value_objects import ImdbId, TmdbId
from alfred.domain.tv_shows.value_objects import ShowStatus
from alfred.infrastructure.api.tmdb.dto import (
from alfred.infrastructure.api_TO_CHECK.tmdb.dto import (
TmdbMovieInfo,
TmdbSeasonInfo,
TmdbShowInfo,
+1 -1
View File
@@ -5,7 +5,7 @@ import tempfile
import pytest
from alfred.infrastructure.persistence import Memory, set_memory
from alfred.infrastructure.persistence_TO_CHECK import Memory, set_memory
@pytest.fixture
@@ -14,18 +14,18 @@ from datetime import UTC, datetime
import pytest
from alfred.domain.releases.entities import (
from alfred.domain.releases_TO_CHECK.entities import (
EpisodeRelease,
MovieRelease,
SeasonRelease,
SeriesRelease,
TrackProfile,
)
from alfred.domain.releases.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared.media import AudioTrack, SubtitleTrack
from alfred.domain.shared.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.releases_TO_CHECK.value_objects import EpisodeRange, ReleaseMode
from alfred.domain.shared_TO_CHECK.media import AudioTrack, SubtitleTrack
from alfred.domain.shared_TO_CHECK.value_objects import FilePath, ImdbId, TmdbId
from alfred.domain.tv_shows.value_objects import EpisodeNumber, SeasonNumber, ShowStatus
from alfred.infrastructure.api.tmdb.dto import TmdbSeasonInfo, TmdbShowInfo
from alfred.infrastructure.api_TO_CHECK.tmdb.dto import TmdbSeasonInfo, TmdbShowInfo
def _audio(lang: str = "eng", *, index: int = 0) -> AudioTrack:
@@ -10,8 +10,8 @@ from __future__ import annotations
import logging
from alfred.domain.shared.value_objects import ImdbId, TmdbId
from alfred.infrastructure.persistence.dot_alfred.v2.repository import (
from alfred.domain.shared_TO_CHECK.value_objects import ImdbId, TmdbId
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.repository import (
DotAlfredMovieLibraryIndex,
DotAlfredMovieReleaseRepository,
DotAlfredSeriesReleaseRepository,
@@ -10,8 +10,8 @@ import logging
import pytest
from alfred.domain.shared.value_objects import TmdbId
from alfred.infrastructure.persistence.dot_alfred.v2.repository import (
from alfred.domain.shared_TO_CHECK.value_objects import TmdbId
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.repository import (
DotAlfredMovieReleaseRepository,
DotAlfredSeriesReleaseRepository,
ShowFolderUnknown,
@@ -10,13 +10,13 @@ from __future__ import annotations
import yaml
from alfred.infrastructure.persistence.dot_alfred.v2.bridge import (
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.bridge import (
movie_release_from_sidecar,
movie_release_to_sidecar,
series_release_from_sidecar,
series_release_to_sidecar,
)
from alfred.infrastructure.persistence.dot_alfred.v2.sidecar_release import (
from alfred.infrastructure.persistence_TO_CHECK.dot_alfred.v2.sidecar_release import (
SCHEMA_VERSION,
MovieReleaseSidecar,
SeriesReleaseSidecar,
+1 -1
View File
@@ -12,7 +12,7 @@ import json
import subprocess
from unittest.mock import MagicMock, patch
from alfred.infrastructure.probe import FfprobeMediaProber
from alfred.infrastructure.probe_TO_CHECK import FfprobeMediaProber
_PROBER = FfprobeMediaProber()
_PATCH_TARGET = "alfred.infrastructure.probe.ffprobe_prober.subprocess.run"
@@ -16,9 +16,9 @@ from __future__ import annotations
from unittest.mock import MagicMock, patch
from alfred.domain.movies.entities import Movie
from alfred.domain.movies.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared.value_objects import ImdbId, TmdbId
from alfred.domain.movies_TO_CHECK.entities import Movie
from alfred.domain.movies_TO_CHECK.value_objects import MovieTitle, ReleaseYear
from alfred.domain.shared_TO_CHECK.value_objects import ImdbId, TmdbId
from alfred.domain.tv_shows.entities import Episode, TVShow
from alfred.domain.tv_shows.value_objects import (
EpisodeNumber,
@@ -30,7 +30,7 @@ from alfred.infrastructure.filesystem.filesystem_operations import (
)
from alfred.infrastructure.filesystem.find_video import find_video_file
from alfred.infrastructure.filesystem.organizer import MediaOrganizer
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
from alfred.infrastructure.knowledge_TO_CHECK.release_kb import YamlReleaseKnowledge
_KB = YamlReleaseKnowledge()
@@ -8,9 +8,9 @@ let mypy / runtime polymorphism do the rest.
from __future__ import annotations
from alfred.domain.shared.ports import LanguageRepository
from alfred.domain.shared.value_objects import Language
from alfred.infrastructure.knowledge.language_registry import LanguageRegistry
from alfred.domain.shared_TO_CHECK.ports import LanguageRepository
from alfred.domain.shared_TO_CHECK.value_objects import Language
from alfred.infrastructure.knowledge_TO_CHECK.language_registry import LanguageRegistry
def _registry() -> LanguageRepository:
+1 -1
View File
@@ -21,7 +21,7 @@ from __future__ import annotations
import yaml
from alfred.infrastructure.metadata.store import MetadataStore
from alfred.infrastructure.metadata_TO_CHECK.store import MetadataStore
# --------------------------------------------------------------------------- #
# Identity / exists #
+3 -3
View File
@@ -17,11 +17,11 @@ from pathlib import Path
import yaml
from alfred.domain.subtitles.value_objects import SubtitleMatchingRules
from alfred.infrastructure.persistence.memory.ltm.components.subtitle_preferences import (
from alfred.domain.subtitles_TO_CHECK.value_objects import SubtitleMatchingRules
from alfred.infrastructure.persistence_TO_CHECK.memory.ltm.components.subtitle_preferences import (
SubtitlePreferences,
)
from alfred.infrastructure.subtitle.rule_repository import (
from alfred.infrastructure.subtitle_TO_CHECK.rule_repository import (
RuleSetRepository,
_filter_override,
)
@@ -16,14 +16,14 @@ from __future__ import annotations
from pathlib import Path
from alfred.application.subtitles.placer import PlacedTrack
from alfred.domain.subtitles.entities import SubtitleScanResult
from alfred.domain.subtitles.value_objects import (
from alfred.application.subtitles_TO_CHECK.placer import PlacedTrack
from alfred.domain.subtitles_TO_CHECK.entities import SubtitleScanResult
from alfred.domain.subtitles_TO_CHECK.value_objects import (
SubtitleFormat,
SubtitleLanguage,
SubtitleType,
)
from alfred.infrastructure.subtitle.metadata_store import SubtitleMetadataStore
from alfred.infrastructure.subtitle_TO_CHECK.metadata_store import SubtitleMetadataStore
SRT = SubtitleFormat(id="srt", extensions=[".srt"])
FRA = SubtitleLanguage(code="fra", tokens=["fr"])
@@ -167,7 +167,7 @@ class TestAppendHistory:
s.append_history([(p, _track())], release_group="GRP1") # dup
s.append_history([(p, _track())], release_group="GRP2")
# Use the underlying MetadataStore by reading the YAML directly.
from alfred.infrastructure.metadata.store import MetadataStore
from alfred.infrastructure.metadata_TO_CHECK.store import MetadataStore
groups = MetadataStore(tmp_path).load().get("release_groups", [])
assert groups == ["GRP1", "GRP2"]
+1 -1
View File
@@ -20,7 +20,7 @@ longer exist.
from unittest.mock import Mock
from alfred.agent.agent import Agent
from alfred.infrastructure.persistence import get_memory
from alfred.infrastructure.persistence_TO_CHECK import get_memory
class TestAgentInit:
+1 -1
View File
@@ -21,7 +21,7 @@ from unittest.mock import Mock
import pytest
from alfred.agent.agent import Agent
from alfred.infrastructure.persistence import get_memory
from alfred.infrastructure.persistence_TO_CHECK import get_memory
from alfred.settings import settings
+1 -1
View File
@@ -349,7 +349,7 @@ class TestChatCompletionsEdgeCases:
"""Should handle streaming with tool execution."""
from alfred.agent import agent
from alfred.app import app
from alfred.infrastructure.persistence import get_memory
from alfred.infrastructure.persistence_TO_CHECK import get_memory
mem = get_memory()
mem.ltm.workspace.download = str(real_folder["downloads"])
+2 -2
View File
@@ -20,7 +20,7 @@ from datetime import datetime
import pytest
from alfred.infrastructure.persistence import (
from alfred.infrastructure.persistence_TO_CHECK import (
EpisodicMemory,
LongTermMemory,
Memory,
@@ -29,7 +29,7 @@ from alfred.infrastructure.persistence import (
has_memory,
init_memory,
)
from alfred.infrastructure.persistence.context import reset_memory
from alfred.infrastructure.persistence_TO_CHECK.context import reset_memory
def _is_iso_timestamp(value: str) -> bool:
+3 -3
View File
@@ -2,8 +2,8 @@
from unittest.mock import Mock, patch
from alfred.agent.tools import api as api_tools
from alfred.infrastructure.persistence import get_memory
from alfred.agent.tools_TO_CHECK import api as api_tools
from alfred.infrastructure.persistence_TO_CHECK import get_memory
def create_mock_response(status_code, json_data=None, text=None):
@@ -329,7 +329,7 @@ class TestAddTorrentToQbittorrent:
@patch("alfred.agent.tools.api.qbittorrent_client")
def test_error_handling(self, mock_client, memory):
"""Should handle client errors correctly."""
from alfred.infrastructure.api.qbittorrent.exceptions import QBittorrentAPIError
from alfred.infrastructure.api_TO_CHECK.qbittorrent.exceptions import QBittorrentAPIError
mock_client.add_torrent.side_effect = QBittorrentAPIError("Connection failed")
+3 -3
View File
@@ -17,9 +17,9 @@ 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
from alfred.agent.tools_TO_CHECK import api as api_tools
from alfred.agent.tools_TO_CHECK import filesystem as fs_tools
from alfred.infrastructure.persistence_TO_CHECK import get_memory
class TestFindTorrentEdgeCases:
+2 -2
View File
@@ -26,8 +26,8 @@ from pathlib import Path
import pytest
from alfred.agent.tools import filesystem as fs_tools
from alfred.infrastructure.persistence import get_memory
from alfred.agent.tools_TO_CHECK import filesystem as fs_tools
from alfred.infrastructure.persistence_TO_CHECK import get_memory
# ---------------------------------------------------------------------------
# set_path_for_folder
+3 -3
View File
@@ -1,6 +1,6 @@
"""Tests for language tools."""
from alfred.agent.tools.language import set_language
from alfred.agent.tools_TO_CHECK.language import set_language
class TestSetLanguage:
@@ -16,7 +16,7 @@ class TestSetLanguage:
def test_persists_to_memory(self, memory):
set_language("es")
# Verify it's stored in STM
from alfred.infrastructure.persistence import get_memory
from alfred.infrastructure.persistence_TO_CHECK import get_memory
mem = get_memory()
assert mem.stm.language == "es"
@@ -28,7 +28,7 @@ class TestSetLanguage:
assert result["language"] == lang
def test_error_on_memory_failure(self, monkeypatch):
from alfred.agent.tools import language as lang_module
from alfred.agent.tools_TO_CHECK import language as lang_module
def broken_get_memory():
raise RuntimeError("memory unavailable")
+7 -7
View File
@@ -20,7 +20,7 @@ Current workflow naming convention is ``<domain>.<workflow_name>``
import pytest
import yaml
from alfred.agent.workflows.loader import WorkflowLoader
from alfred.agent.workflows_TO_CHECK.loader import WorkflowLoader
ORGANIZE_MEDIA = "media.organize_media"
MANAGE_SUBTITLES = "media.manage_subtitles"
@@ -49,7 +49,7 @@ def workflows_dir(tmp_path):
@pytest.fixture
def loader_from_dir(workflows_dir, monkeypatch):
"""WorkflowLoader pointed at our temp dir."""
import alfred.agent.workflows.loader as loader_module
import alfred.agent.workflows_TO_CHECK.loader as loader_module
monkeypatch.setattr(loader_module, "_WORKFLOWS_DIR", workflows_dir)
return WorkflowLoader()
@@ -157,7 +157,7 @@ class TestLoaderMechanics:
def test_uses_yaml_name_field(self, tmp_path, monkeypatch):
"""Name from YAML content takes priority over filename stem."""
import alfred.agent.workflows.loader as loader_module
import alfred.agent.workflows_TO_CHECK.loader as loader_module
monkeypatch.setattr(loader_module, "_WORKFLOWS_DIR", tmp_path)
@@ -169,7 +169,7 @@ class TestLoaderMechanics:
assert "completely_different_filename" not in loader.names()
def test_falls_back_to_stem_when_no_name(self, tmp_path, monkeypatch):
import alfred.agent.workflows.loader as loader_module
import alfred.agent.workflows_TO_CHECK.loader as loader_module
monkeypatch.setattr(loader_module, "_WORKFLOWS_DIR", tmp_path)
@@ -178,7 +178,7 @@ class TestLoaderMechanics:
assert "my_workflow" in loader.names()
def test_skips_malformed_yaml(self, tmp_path, monkeypatch):
import alfred.agent.workflows.loader as loader_module
import alfred.agent.workflows_TO_CHECK.loader as loader_module
monkeypatch.setattr(loader_module, "_WORKFLOWS_DIR", tmp_path)
@@ -191,7 +191,7 @@ class TestLoaderMechanics:
def test_deterministic_load_order(self, tmp_path, monkeypatch):
"""Files loaded in sorted order — later file wins on name collision."""
import alfred.agent.workflows.loader as loader_module
import alfred.agent.workflows_TO_CHECK.loader as loader_module
monkeypatch.setattr(loader_module, "_WORKFLOWS_DIR", tmp_path)
@@ -207,7 +207,7 @@ class TestLoaderMechanics:
assert loader.get("duplicate")["version"] == 2
def test_empty_directory(self, tmp_path, monkeypatch):
import alfred.agent.workflows.loader as loader_module
import alfred.agent.workflows_TO_CHECK.loader as loader_module
monkeypatch.setattr(loader_module, "_WORKFLOWS_DIR", tmp_path)