From 428bbb20bdd62c4be1b557cfcbd07a9b078c6b6d Mon Sep 17 00:00:00 2001 From: Benexl Date: Sat, 5 Jul 2025 17:13:49 +0300 Subject: [PATCH] feat: new config logic --- fastanime/__init__.py | 2 +- fastanime/cli/cli.py | 4 ++-- fastanime/cli/commands/anilist/__init__.py | 2 +- fastanime/cli/commands/config.py | 7 +++---- fastanime/cli/config/generate.py | 3 ++- fastanime/cli/config/loader.py | 2 +- fastanime/cli/config/model.py | 11 ++++++----- fastanime/cli/options.py | 4 ++-- fastanime/cli/utils/lazyloader.py | 2 +- fastanime/cli/utils/logging.py | 2 ++ 10 files changed, 21 insertions(+), 18 deletions(-) diff --git a/fastanime/__init__.py b/fastanime/__init__.py index 761922d..419c855 100644 --- a/fastanime/__init__.py +++ b/fastanime/__init__.py @@ -1,5 +1,5 @@ -import sys import importlib.metadata +import sys if sys.version_info < (3, 10): raise ImportError( diff --git a/fastanime/cli/cli.py b/fastanime/cli/cli.py index bf971e6..e856d2e 100644 --- a/fastanime/cli/cli.py +++ b/fastanime/cli/cli.py @@ -2,11 +2,11 @@ import click from click.core import ParameterSource from .. import __version__ -from .utils.lazyloader import LazyGroup -from .utils.logging import setup_logging from .config import AppConfig, ConfigLoader from .constants import USER_CONFIG_PATH from .options import options_from_model +from .utils.lazyloader import LazyGroup +from .utils.logging import setup_logging commands = { "config": ".config", diff --git a/fastanime/cli/commands/anilist/__init__.py b/fastanime/cli/commands/anilist/__init__.py index 0f4abba..d61ea11 100644 --- a/fastanime/cli/commands/anilist/__init__.py +++ b/fastanime/cli/commands/anilist/__init__.py @@ -1,7 +1,7 @@ import click -from ...utils.tools import FastAnimeRuntimeState from ...utils.lazyloader import LazyGroup +from ...utils.tools import FastAnimeRuntimeState commands = { "trending": "trending.trending", diff --git a/fastanime/cli/commands/config.py b/fastanime/cli/commands/config.py index 1e4a4d0..e6090ee 100644 --- a/fastanime/cli/commands/config.py +++ b/fastanime/cli/commands/config.py @@ -44,8 +44,8 @@ from ..config.model import AppConfig ) @click.pass_obj def config(user_config: AppConfig, path, view, desktop_entry, update): - from ..constants import USER_CONFIG_PATH from ..config.generate import generate_config_ini_from_app_model + from ..constants import USER_CONFIG_PATH print(user_config.mpv.args) if path: @@ -66,17 +66,16 @@ def _generate_desktop_entry(): """ Generates a desktop entry for FastAnime. """ - from ... import __version__ - import sys - import os import shutil + import sys from pathlib import Path from textwrap import dedent from rich import print from rich.prompt import Confirm + from ... import __version__ from ..constants import APP_NAME, ICON_PATH, PLATFORM FASTANIME_EXECUTABLE = shutil.which("fastanime") diff --git a/fastanime/cli/config/generate.py b/fastanime/cli/config/generate.py index 6d6800a..c0de869 100644 --- a/fastanime/cli/config/generate.py +++ b/fastanime/cli/config/generate.py @@ -1,7 +1,8 @@ -from .model import AppConfig import textwrap from pathlib import Path + from ..constants import APP_ASCII_ART +from .model import AppConfig # The header for the config file. config_asci = "\n".join([f"# {line}" for line in APP_ASCII_ART.split()]) diff --git a/fastanime/cli/config/loader.py b/fastanime/cli/config/loader.py index 6635759..2f28f34 100644 --- a/fastanime/cli/config/loader.py +++ b/fastanime/cli/config/loader.py @@ -6,8 +6,8 @@ from pydantic import ValidationError from ...core.exceptions import ConfigError from ..constants import USER_CONFIG_PATH -from .model import AppConfig from .generate import generate_config_ini_from_app_model +from .model import AppConfig class ConfigLoader: diff --git a/fastanime/cli/config/model.py b/fastanime/cli/config/model.py index 4b7394f..79e82a7 100644 --- a/fastanime/cli/config/model.py +++ b/fastanime/cli/config/model.py @@ -1,18 +1,19 @@ +import os from pathlib import Path from typing import Literal -import os + from pydantic import BaseModel, Field, field_validator from ...core.constants import ( FZF_DEFAULT_OPTS, - ROFI_THEME_MAIN, - ROFI_THEME_INPUT, ROFI_THEME_CONFIRM, + ROFI_THEME_INPUT, + ROFI_THEME_MAIN, ROFI_THEME_PREVIEW, ) -from ..constants import USER_VIDEOS_DIR, APP_ASCII_ART -from ...libs.anime_provider import SERVERS_AVAILABLE, PROVIDERS_AVAILABLE from ...libs.anilist.constants import SORTS_AVAILABLE +from ...libs.anime_provider import PROVIDERS_AVAILABLE, SERVERS_AVAILABLE +from ..constants import APP_ASCII_ART, USER_VIDEOS_DIR class External(BaseModel): diff --git a/fastanime/cli/options.py b/fastanime/cli/options.py index ea860da..aeebd22 100644 --- a/fastanime/cli/options.py +++ b/fastanime/cli/options.py @@ -1,6 +1,6 @@ from collections.abc import Callable from pathlib import Path -from typing import Any, Literal, get_origin, get_args +from typing import Any, Literal, get_args, get_origin import click from pydantic import BaseModel @@ -113,7 +113,7 @@ def options_from_model(model: type[BaseModel], parent_name: str = "") -> Callabl return f # Store the list of decorators as an attribute for nested calls - setattr(decorator, "decorators", decorators) + decorator.decorators = decorators return decorator diff --git a/fastanime/cli/utils/lazyloader.py b/fastanime/cli/utils/lazyloader.py index b8709e4..bf35c49 100644 --- a/fastanime/cli/utils/lazyloader.py +++ b/fastanime/cli/utils/lazyloader.py @@ -4,7 +4,7 @@ import click class LazyGroup(click.Group): - def __init__(self, root:str, *args, lazy_subcommands=None, **kwargs): + def __init__(self, root: str, *args, lazy_subcommands=None, **kwargs): super().__init__(*args, **kwargs) # lazy_subcommands is a map of the form: # diff --git a/fastanime/cli/utils/logging.py b/fastanime/cli/utils/logging.py index f13167c..d36ba66 100644 --- a/fastanime/cli/utils/logging.py +++ b/fastanime/cli/utils/logging.py @@ -1,5 +1,7 @@ import logging + from rich.traceback import install as rich_install + from ..constants import LOG_FILE_PATH