[M] Move literal types to types.py

This commit is contained in:
Hykilpikonna 2022-12-10 21:00:10 -05:00
parent 4d073df750
commit f786dce40e
No known key found for this signature in database
GPG key ID: 256CD01A41D7FA26
6 changed files with 22 additions and 21 deletions

View file

@ -2,13 +2,9 @@ from __future__ import annotations
import colorsys
from dataclasses import dataclass, astuple
from typing_extensions import Literal
from .constants import GLOBAL_CFG
AnsiMode = Literal['default', 'ansi', '8bit', 'rgb']
LightDark = Literal['light', 'dark']
from .types import *
MINECRAFT_COLORS = ["&0/\033[0;30m", "&1/\033[0;34m", "&2/\033[0;32m", "&3/\033[0;36m", "&4/\033[0;31m",
"&5/\033[0;35m", "&6/\033[0;33m", "&7/\033[0;37m", "&8/\033[1;30m", "&9/\033[1;34m",

View file

@ -1,10 +1,9 @@
from __future__ import annotations
import os
from dataclasses import dataclass
from pathlib import Path
from typing_extensions import Literal
from .types import LightDark
CONFIG_PATH = Path.home() / '.config/hyfetch.json'
VERSION = '1.4.4'
@ -36,10 +35,10 @@ class GlobalConfig:
debug: bool
is_light: bool
def light_dark(self) -> Literal['light', 'dark']:
def light_dark(self) -> LightDark:
return 'light' if self.is_light else 'dark'
def default_lightness(self, term: Literal['light', 'dark'] | None = None) -> float:
def default_lightness(self, term: LightDark | None = None) -> float:
if term is None:
term = self.light_dark()
return 0.65 if term.lower() == 'dark' else 0.4

View file

@ -2,10 +2,10 @@ from __future__ import annotations
from dataclasses import dataclass, field
from .color_util import AnsiMode, LightDark
from .constants import CONFIG_PATH
from .neofetch_util import ColorAlignment
from .serializer import json_stringify, from_dict
from .types import AnsiMode, LightDark, BackendLiteral
@dataclass
@ -15,6 +15,7 @@ class Config:
light_dark: LightDark = 'dark'
lightness: float | None = None
color_align: ColorAlignment = field(default_factory=lambda: ColorAlignment('horizontal'))
backend: BackendLiteral = "neofetch"
@classmethod
def from_dict(cls, d: dict):

View file

@ -1,6 +1,5 @@
from __future__ import annotations
import inspect
import os
import platform
import re
@ -15,12 +14,12 @@ from tempfile import TemporaryDirectory
from urllib.request import urlretrieve
import pkg_resources
from typing_extensions import Literal
from hyfetch.color_util import color
from .constants import GLOBAL_CFG, MINGIT_URL
from .presets import ColorProfile
from .serializer import from_dict
from .types import BackendLiteral, ColorAlignMode
RE_NEOFETCH_COLOR = re.compile('\\${c[0-9]}')
@ -76,7 +75,7 @@ def fill_starting(asc: str) -> str:
@dataclass
class ColorAlignment:
mode: Literal['horizontal', 'vertical', 'custom']
mode: ColorAlignMode
# custom_colors[ascii color index] = unique color index in preset
custom_colors: dict[int, int] = ()
@ -201,7 +200,7 @@ def check_windows_cmd():
sys.exit(0)
def run_command(args: str, pipe: bool = False) -> str | None:
def run_neofetch_cmd(args: str, pipe: bool = False) -> str | None:
"""
Run neofetch command
"""
@ -237,7 +236,7 @@ def get_distro_ascii(distro: str | None = None) -> str:
if distro:
cmd += f' --ascii_distro {distro}'
asc = run_command(cmd, True)
asc = run_neofetch_cmd(cmd, True)
# Unescape backslashes here because backslashes are escaped in neofetch for printf
asc = asc.replace('\\\\', '\\')
@ -246,7 +245,7 @@ def get_distro_ascii(distro: str | None = None) -> str:
def get_distro_name():
return run_command('ascii_distro_name', True)
return run_neofetch_cmd('ascii_distro_name', True)
def run_neofetch(preset: ColorProfile, alignment: ColorAlignment):
@ -269,7 +268,7 @@ def run_neofetch(preset: ColorProfile, alignment: ColorAlignment):
path.write_text(asc)
# Call neofetch with the temp file
run_command(f'--ascii --source {path.absolute()} --ascii-colors')
run_neofetch_cmd(f'--ascii --source {path.absolute()} --ascii-colors')
def get_fore_back(distro: str | None = None) -> tuple[int, int] | None:

View file

@ -2,10 +2,9 @@ from __future__ import annotations
from typing import Iterable
from typing_extensions import Literal
from .color_util import RGB, LightDark
from .color_util import RGB
from .constants import GLOBAL_CFG
from .types import LightDark, ColorSpacing
def remove_duplicates(seq: Iterable) -> list:
@ -20,7 +19,7 @@ def remove_duplicates(seq: Iterable) -> list:
class ColorProfile:
raw: list[str]
colors: list[RGB]
spacing: Literal['equal', 'weighted'] = 'equal'
spacing: ColorSpacing = 'equal'
def __init__(self, colors: list[str] | list[RGB]):
if isinstance(colors[0], str):

7
hyfetch/types.py Normal file
View file

@ -0,0 +1,7 @@
from typing_extensions import Literal
AnsiMode = Literal['default', 'ansi', '8bit', 'rgb']
LightDark = Literal['light', 'dark']
BackendLiteral = Literal["neofetch", "fastfetch"]
ColorAlignMode = Literal['horizontal', 'vertical', 'custom']
ColorSpacing = Literal['equal', 'weighted']