feat: performance review

This commit is contained in:
Benexl
2025-07-24 11:36:23 +03:00
parent e908c793c6
commit 9cafcde9e1
11 changed files with 15 additions and 31 deletions

View File

@@ -1,6 +1,5 @@
import click
from ...interactive.session import session
from ...utils.lazyloader import LazyGroup
from . import examples
@@ -33,6 +32,7 @@ def anilist(ctx: click.Context, resume: bool):
The entry point for the 'anilist' command. If no subcommand is invoked,
it launches the interactive TUI mode.
"""
from ...interactive.session import session
config = ctx.obj

View File

@@ -12,7 +12,6 @@ if TYPE_CHECKING:
from typing_extensions import Unpack
from ...libs.players.base import BasePlayer
from ...libs.providers.anime.base import BaseAnimeProvider
from ...libs.providers.anime.types import Anime
from ...libs.selectors.base import BaseSelector

View File

@@ -1,6 +1,6 @@
import textwrap
from pathlib import Path
from typing import TYPE_CHECKING, Any, Literal, get_args, get_origin
from typing import Any, Literal, get_args, get_origin
from InquirerPy import inquirer
from InquirerPy.validator import NumberValidator

View File

@@ -2,14 +2,11 @@ import configparser
from pathlib import Path
import click
from InquirerPy import inquirer
from pydantic import ValidationError
from ...core.config import AppConfig
from ...core.constants import USER_CONFIG_PATH
from ...core.exceptions import ConfigError
from .generate import generate_config_ini_from_app_model
from .editor import InteractiveConfigEditor
class ConfigLoader:
@@ -42,7 +39,12 @@ class ConfigLoader:
click.echo(
"[bold yellow]Welcome to FastAnime![/bold yellow] No configuration file found."
)
choice = inquirer.select(
from InquirerPy import inquirer
from .editor import InteractiveConfigEditor
from .generate import generate_config_ini_from_app_model
choice = inquirer.select( # type: ignore
message="How would you like to proceed?",
choices=[
"Use default settings (Recommended for new users)",

View File

@@ -4,7 +4,6 @@ from typing import Optional
import click
from rich.console import Console
from rich.panel import Panel
from rich.progress import Progress, SpinnerColumn, TextColumn
console = Console()

View File

@@ -36,7 +36,6 @@ class MediaRegistryService:
self._index_file_modified_time = 0
_lock_file = self.config.media_dir / "registry.lock"
self._lock = FileLock(_lock_file)
self._load_index()
def _ensure_directories(self) -> None:
"""Ensure registry directories exist."""

View File

@@ -63,22 +63,6 @@ def get_anime_titles(query: str, variables: dict = {}):
return []
def downloaded_anime_titles(ctx, param, incomplete):
import os
from ..constants import USER_VIDEOS_DIR
try:
titles = [
title
for title in os.listdir(USER_VIDEOS_DIR)
if title.lower().startswith(incomplete.lower()) or not incomplete
]
return titles
except Exception:
return []
def anime_titles_shell_complete(ctx, param, incomplete):
incomplete = incomplete.strip()
if not incomplete:

View File

View File

@@ -1,5 +1,5 @@
# GeneralConfig
from fastanime.core.config.defaults import SESSIONS_DIR
from .defaults import SESSIONS_DIR
GENERAL_PYGMENT_STYLE = "The pygment style to use"
GENERAL_API_CLIENT = "The media database API to use (e.g., 'anilist', 'jikan')."

View File

@@ -3,7 +3,7 @@ import os
import time
import uuid
from pathlib import Path
from typing import IO, Any, BinaryIO, TextIO, Union
from typing import IO, Any, Union
logger = logging.getLogger(__name__)

View File

@@ -1,7 +1,5 @@
import abc
from typing import Any, Optional
from httpx import Client
from typing import TYPE_CHECKING, Any, Optional, Union
from ...core.config import AnilistConfig
from .params import (
@@ -11,13 +9,16 @@ from .params import (
)
from .types import MediaSearchResult, UserProfile
if TYPE_CHECKING:
from httpx import Client
class BaseApiClient(abc.ABC):
"""
Abstract Base Class defining a generic contract for media database APIs.
"""
def __init__(self, config: AnilistConfig | Any, client: Client):
def __init__(self, config: AnilistConfig | Any, client: "Client"):
self.config = config
self.http_client = client