refactor(release): rename ParsePath enum to TokenizationRoute

ParsePath collided with pathlib.Path in mental models, and was one
letter from the parse_path attribute that stores its value — confusion
on confusion. Road (EASY/SHITTY/PATH_OF_PAIN) is the parser-confidence
axis; TokenizationRoute (DIRECT/SANITIZED/AI) is the tokenization-method
axis. They're orthogonal and the new name makes that obvious.

Field name parse_path stays — it's the right name for the attribute
that *holds* the route. String values ("direct", "sanitized", "ai")
stay too, so YAML fixtures and the analyze_release tool spec are
unchanged. Only the type symbol changes:

- value_objects.py: class rename + docstring spelling out orthogonality
  with Road.
- services.py: 3 call sites.
- scoring.py: docstring cross-reference updated.
- tests/domain/release/test_parser_v2_scoring.py: import + 3 call sites.
This commit is contained in:
2026-05-21 07:39:42 +02:00
parent 0246f85ef8
commit 5e0ed11672
5 changed files with 39 additions and 16 deletions
@@ -22,8 +22,8 @@ from alfred.domain.release.services import parse_release
from alfred.domain.release.value_objects import (
MediaTypeToken,
ParsedRelease,
ParsePath,
ParseReport,
TokenizationRoute,
)
from alfred.domain.shared.exceptions import ValidationError
from alfred.infrastructure.knowledge.release_kb import YamlReleaseKnowledge
@@ -79,7 +79,7 @@ def _movie(year: int = 2020, **overrides) -> ParsedRelease:
codec="x264",
group="GROUP",
media_type=MediaTypeToken.MOVIE,
parse_path=ParsePath.DIRECT,
parse_path=TokenizationRoute.DIRECT,
)
base.update(overrides)
return ParsedRelease(**base)
@@ -120,7 +120,7 @@ class TestComputeScore:
codec="x265",
group="KONTRAST",
media_type=MediaTypeToken.TV_SHOW,
parse_path=ParsePath.DIRECT,
parse_path=TokenizationRoute.DIRECT,
)
tokens = [
Token("Oz", 0, TokenRole.TITLE),
@@ -230,7 +230,7 @@ class TestCollectors:
codec=None,
group="UNKNOWN",
media_type=MediaTypeToken.UNKNOWN,
parse_path=ParsePath.DIRECT,
parse_path=TokenizationRoute.DIRECT,
)
assert set(collect_missing_critical(empty)) == {
"title",