chore: format with ruff

This commit is contained in:
Benexl
2025-07-26 10:56:26 +03:00
parent 1a1d8cc8f4
commit 75e67c22d2
39 changed files with 2167 additions and 1672 deletions

View File

@@ -4,12 +4,11 @@ from typing import Iterator
def parse_episode_range(
episode_range_str: str | None,
available_episodes: list[str]
episode_range_str: str | None, available_episodes: list[str]
) -> Iterator[str]:
"""
Parse an episode range string and return an iterator of episode numbers.
This function handles various episode range formats:
- Single episode: "5" -> episodes from index 5 onwards
- Range with start and end: "5:10" -> episodes from index 5 to 10 (exclusive)
@@ -17,18 +16,18 @@ def parse_episode_range(
- Start only: "5:" -> episodes from index 5 onwards
- End only: ":10" -> episodes from beginning to index 10
- All episodes: ":" -> all episodes
Args:
episode_range_str: The episode range string to parse (e.g., "5:10", "5:", ":10", "5")
available_episodes: List of available episode numbers/identifiers
Returns:
Iterator over the selected episode numbers
Raises:
ValueError: If the episode range format is invalid
IndexError: If the specified indices are out of range
Examples:
>>> episodes = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
>>> list(parse_episode_range("2:5", episodes))
@@ -43,14 +42,14 @@ def parse_episode_range(
if not episode_range_str:
# No range specified, return all episodes
return iter(available_episodes)
# Sort episodes numerically for consistent ordering
episodes = sorted(available_episodes, key=float)
if ":" in episode_range_str:
# Handle colon-separated ranges
parts = episode_range_str.split(":")
if len(parts) == 3:
# Format: start:end:step
start_str, end_str, step_str = parts
@@ -59,15 +58,15 @@ def parse_episode_range(
f"Invalid episode range format: '{episode_range_str}'. "
"When using 3 parts (start:end:step), all parts must be non-empty."
)
try:
start_idx = int(start_str)
end_idx = int(end_str)
step = int(step_str)
if step <= 0:
raise ValueError("Step value must be positive")
return iter(episodes[start_idx:end_idx:step])
except ValueError as e:
if "invalid literal" in str(e):
@@ -76,11 +75,11 @@ def parse_episode_range(
"All parts must be valid integers."
) from e
raise
elif len(parts) == 2:
# Format: start:end or start: or :end
start_str, end_str = parts
if start_str and end_str:
# Both start and end specified: start:end
try:
@@ -92,7 +91,7 @@ def parse_episode_range(
f"Invalid episode range format: '{episode_range_str}'. "
"Start and end must be valid integers."
) from e
elif start_str and not end_str:
# Only start specified: start:
try:
@@ -103,7 +102,7 @@ def parse_episode_range(
f"Invalid episode range format: '{episode_range_str}'. "
"Start must be a valid integer."
) from e
elif not start_str and end_str:
# Only end specified: :end
try:
@@ -114,7 +113,7 @@ def parse_episode_range(
f"Invalid episode range format: '{episode_range_str}'. "
"End must be a valid integer."
) from e
else:
# Both empty: ":"
return iter(episodes)