From 4382591748cee338e5eb696dfa1816d73c3dfc89 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Wed, 13 Dec 2023 16:20:28 -0800 Subject: [PATCH] more lint --- .../config/validators/variable_validation.py | 1 + src/ytdl_sub/entries/entry.py | 10 ++++++++++ src/ytdl_sub/entries/script/function_scripts.py | 2 +- .../entries/script/variable_definitions.py | 15 +++++++++++++++ src/ytdl_sub/entries/script/variable_scripts.py | 3 ++- src/ytdl_sub/script/functions/__init__.py | 3 ++- src/ytdl_sub/script/functions/json_functions.py | 1 + src/ytdl_sub/script/functions/string_functions.py | 2 -- src/ytdl_sub/script/types/resolvable.py | 3 ++- src/ytdl_sub/script/types/variable_dependency.py | 1 - .../validators/string_formatter_validators.py | 4 ++++ 11 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/ytdl_sub/config/validators/variable_validation.py b/src/ytdl_sub/config/validators/variable_validation.py index e5588c64..3ebd88f3 100644 --- a/src/ytdl_sub/config/validators/variable_validation.py +++ b/src/ytdl_sub/config/validators/variable_validation.py @@ -116,6 +116,7 @@ class VariableValidation: if added_variables: for added_variable in added_variables: if added_variable in self.resolved_variables: + # pylint: disable=protected-access raise options._validation_exception( f"Tried added the variable '{added_variable}', but it already " f"exists as a defined variable." diff --git a/src/ytdl_sub/entries/entry.py b/src/ytdl_sub/entries/entry.py index d6d66177..cfd0546f 100644 --- a/src/ytdl_sub/entries/entry.py +++ b/src/ytdl_sub/entries/entry.py @@ -41,6 +41,10 @@ class Entry(BaseEntry, Scriptable): self.update_script() def initialize_script(self, other: Optional[Scriptable] = None) -> "Entry": + """ + Initializes the entry script using the Overrides script, then adding + its kwargs to the entry metadata variable + """ # Overrides contains added variables that are unresolvable, add them here if other: self.script = copy.deepcopy(other.script) @@ -50,10 +54,16 @@ class Entry(BaseEntry, Scriptable): return self def get(self, variable: Variable, expected_type: Type[TypeT]) -> TypeT: + """ + Gets a variable of an expected type. Will error if it does not exist or is not resolved. + """ out = self.script.resolve(unresolvable=self.unresolvable).get_native(variable.variable_name) return expected_type(out) def try_get(self, variable: Variable, expected_type: Type[TypeT]) -> Optional[TypeT]: + """ + Gets a variable of an expected type. Returns None if it does not exist or is not resolved. + """ try: return self.get(variable=variable, expected_type=expected_type) except ScriptVariableNotResolved: diff --git a/src/ytdl_sub/entries/script/function_scripts.py b/src/ytdl_sub/entries/script/function_scripts.py index 16f60b3d..85622187 100644 --- a/src/ytdl_sub/entries/script/function_scripts.py +++ b/src/ytdl_sub/entries/script/function_scripts.py @@ -6,7 +6,7 @@ from ytdl_sub.entries.script.variable_definitions import VariableDefinitions v: VariableDefinitions = VARIABLES CUSTOM_FUNCTION_SCRIPTS: Dict[str, str] = { - "%extract_field_from_metadata_array_getter": """{ + "%extract_field_from_metadata_array_getter": """{ %map_get( %map(%array_at($0, 0)), %array_at($0, 1) ) }""", "%extract_field_from_metadata_array": """{ diff --git a/src/ytdl_sub/entries/script/variable_definitions.py b/src/ytdl_sub/entries/script/variable_definitions.py index f54d3485..a57b83ef 100644 --- a/src/ytdl_sub/entries/script/variable_definitions.py +++ b/src/ytdl_sub/entries/script/variable_definitions.py @@ -545,22 +545,37 @@ class VariableDefinitions: @property def comments(self) -> MetadataVariable: + """ + Comments if they are requested + """ return MetadataVariable("comments", "comments") @property def chapters(self) -> MetadataVariable: + """ + Chapters if they exist + """ return MetadataVariable("chapters", "chapters") @property def sponsorblock_chapters(self) -> MetadataVariable: + """ + Sponsorblock Chapters if they are requested and exist + """ return MetadataVariable("sponsorblock_chapters", "sponsorblock_chapters") @property def requested_subtitles(self) -> MetadataVariable: + """ + Subtitles if they are requested and exist + """ return MetadataVariable("requested_subtitles", "requested_subtitles") @property def ytdl_sub_input_url(self) -> Variable: + """ + The input URL used in ytdl-sub to create this entry. + """ return Variable("ytdl_sub_input_url") @property diff --git a/src/ytdl_sub/entries/script/variable_scripts.py b/src/ytdl_sub/entries/script/variable_scripts.py index ea20a29e..ef4e4a08 100644 --- a/src/ytdl_sub/entries/script/variable_scripts.py +++ b/src/ytdl_sub/entries/script/variable_scripts.py @@ -44,7 +44,8 @@ def _get( # TODO: assert with good error message if key DNE out = f"%map_get({metadata.variable_name}, '{key.metadata_key}')" elif isinstance(default, Variable): - out = f"%map_get_non_empty({metadata.variable_name}, '{key.metadata_key}', {default.variable_name})" + args = f"{metadata.variable_name}, '{key.metadata_key}', {default.variable_name}" + out = f"%map_get_non_empty({args})" elif isinstance(default, str): out = f"%map_get_non_empty({metadata.variable_name}, '{key.metadata_key}', '{default}')" elif isinstance(default, dict): diff --git a/src/ytdl_sub/script/functions/__init__.py b/src/ytdl_sub/script/functions/__init__.py index fe196cf1..a7ff8489 100644 --- a/src/ytdl_sub/script/functions/__init__.py +++ b/src/ytdl_sub/script/functions/__init__.py @@ -48,6 +48,7 @@ class Functions( def register_function(cls, function: Callable[..., Resolvable]) -> None: if cls.is_built_in(function.__name__): raise ValueError( - f"Cannot register a function with name {function.__name__} because it already exists" + f"Cannot register a function with name {function.__name__} " + f"because it already exists" ) cls._custom_functions[function.__name__] = function diff --git a/src/ytdl_sub/script/functions/json_functions.py b/src/ytdl_sub/script/functions/json_functions.py index d13a33f0..e0d4f4d2 100644 --- a/src/ytdl_sub/script/functions/json_functions.py +++ b/src/ytdl_sub/script/functions/json_functions.py @@ -13,6 +13,7 @@ from ytdl_sub.script.utils.exceptions import UNREACHABLE def _from_json(out: Any) -> Resolvable: + # pylint: disable=too-many-return-statements if out is None: return String("") if isinstance(out, int): diff --git a/src/ytdl_sub/script/functions/string_functions.py b/src/ytdl_sub/script/functions/string_functions.py index be8fa16d..be3b52c2 100644 --- a/src/ytdl_sub/script/functions/string_functions.py +++ b/src/ytdl_sub/script/functions/string_functions.py @@ -1,7 +1,5 @@ from typing import Optional -from yt_dlp.utils import sanitize_filename - from ytdl_sub.script.types.resolvable import AnyArgument from ytdl_sub.script.types.resolvable import Integer from ytdl_sub.script.types.resolvable import Numeric diff --git a/src/ytdl_sub/script/types/resolvable.py b/src/ytdl_sub/script/types/resolvable.py index 4ece8201..9ebff025 100644 --- a/src/ytdl_sub/script/types/resolvable.py +++ b/src/ytdl_sub/script/types/resolvable.py @@ -100,7 +100,7 @@ class Hashable(Resolvable, ABC): @dataclass(frozen=True) -class NonHashable(ABC): +class NonHashable(NamedType, ABC): pass @@ -166,6 +166,7 @@ class BuiltInFunctionType(FunctionType, ABC): class Lambda(Resolvable): value: str + @property def native(self) -> Any: return f"%{self.value}" diff --git a/src/ytdl_sub/script/types/variable_dependency.py b/src/ytdl_sub/script/types/variable_dependency.py index 4a34688d..b96753fe 100644 --- a/src/ytdl_sub/script/types/variable_dependency.py +++ b/src/ytdl_sub/script/types/variable_dependency.py @@ -123,7 +123,6 @@ class VariableDependency(ABC): ------- Resolved value """ - pass @classmethod def _resolve_argument_type( diff --git a/src/ytdl_sub/validators/string_formatter_validators.py b/src/ytdl_sub/validators/string_formatter_validators.py index 546816b5..59caabe3 100644 --- a/src/ytdl_sub/validators/string_formatter_validators.py +++ b/src/ytdl_sub/validators/string_formatter_validators.py @@ -95,6 +95,8 @@ class StringFormatterValidator(StringValidator): """ return self._value + # pylint: disable=no-self-use + def post_process(self, resolved: str) -> str: """ Returns @@ -103,6 +105,8 @@ class StringFormatterValidator(StringValidator): """ return resolved + # pylint: enable=no-self-use + # pylint: disable=line-too-long class OverridesStringFormatterValidator(StringFormatterValidator):