From 169bcccfe26c05f09d0e9ec34b85bb73419f5923 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Tue, 28 Feb 2023 16:58:53 -0800 Subject: [PATCH] lint --- src/ytdl_sub/config/config_validator.py | 3 +-- src/ytdl_sub/config/preset_options.py | 6 ++++-- src/ytdl_sub/utils/ffmpeg.py | 9 ++++++--- src/ytdl_sub/utils/file_handler.py | 6 ++++-- src/ytdl_sub/utils/file_lock.py | 4 +++- src/ytdl_sub/utils/system.py | 1 - src/ytdl_sub/validators/file_path_validators.py | 5 ++++- tests/e2e/conftest.py | 7 +++++-- tests/expected_transaction_log.py | 4 +++- tests/unit/utils/test_yaml.py | 4 +++- 10 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/ytdl_sub/config/config_validator.py b/src/ytdl_sub/config/config_validator.py index cf5ad38b..52dd62c4 100644 --- a/src/ytdl_sub/config/config_validator.py +++ b/src/ytdl_sub/config/config_validator.py @@ -1,4 +1,3 @@ -import tempfile from typing import Any from typing import Dict from typing import Optional @@ -12,7 +11,7 @@ from ytdl_sub.validators.validators import LiteralDictValidator from ytdl_sub.validators.validators import StringValidator if IS_WINDOWS: - _DEFAULT_LOCK_DIRECTORY = tempfile.TemporaryDirectory().name + _DEFAULT_LOCK_DIRECTORY = "" # Not supported in Windows _DEFAULT_FFMPEG_PATH = ".\\ffmpeg.exe" _DEFAULT_FFPROBE_PATH = ".\\ffprobe.exe" else: diff --git a/src/ytdl_sub/config/preset_options.py b/src/ytdl_sub/config/preset_options.py index 7635b23d..e90b4629 100644 --- a/src/ytdl_sub/config/preset_options.py +++ b/src/ytdl_sub/config/preset_options.py @@ -7,8 +7,10 @@ from typing import Optional from yt_dlp.utils import sanitize_filename from ytdl_sub.entries.entry import Entry -from ytdl_sub.validators.file_path_validators import OverridesStringFormatterValidatorFilePathValidator, \ - StringFormatterFilePathValidator +from ytdl_sub.validators.file_path_validators import ( + OverridesStringFormatterValidatorFilePathValidator, +) +from ytdl_sub.validators.file_path_validators import StringFormatterFilePathValidator from ytdl_sub.validators.strict_dict_validator import StrictDictValidator from ytdl_sub.validators.string_datetime import StringDatetimeValidator from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator diff --git a/src/ytdl_sub/utils/ffmpeg.py b/src/ytdl_sub/utils/ffmpeg.py index 35a7b9c4..c67d61ce 100644 --- a/src/ytdl_sub/utils/ffmpeg.py +++ b/src/ytdl_sub/utils/ffmpeg.py @@ -1,6 +1,4 @@ -import os import subprocess -import sys import tempfile from typing import Dict from typing import List @@ -30,16 +28,19 @@ class FFMPEG: @classmethod def set_paths(cls, ffmpeg_path: str, ffprobe_path: str) -> None: + """Set ffmpeg paths for usage""" cls._FFMPEG_PATH = ffmpeg_path cls._FFPROBE_PATH = ffprobe_path @classmethod def ffmpeg_path(cls) -> str: + """Ensure the ffmpeg path has been set and return it""" assert cls._FFMPEG_PATH, "ffmpeg has not been set" return cls._FFMPEG_PATH @classmethod def ffprobe_path(cls) -> str: + """Ensure the ffprobe path has been set and return it""" assert cls._FFPROBE_PATH, "ffprobe has not been set" return cls._FFPROBE_PATH @@ -150,7 +151,9 @@ def set_ffmpeg_metadata_chapters( lines += _create_metadata_chapters(chapters=chapters, file_duration_sec=file_duration_sec) tmp_file_path = FFMPEG.tmp_file_path(relative_file_path=file_path) - with tempfile.NamedTemporaryFile(mode="w", suffix=".txt", encoding="utf-8", delete=False) as metadata_file: + with tempfile.NamedTemporaryFile( + mode="w", suffix=".txt", encoding="utf-8", delete=False + ) as metadata_file: metadata_file.write("\n".join(lines)) metadata_file.flush() diff --git a/src/ytdl_sub/utils/file_handler.py b/src/ytdl_sub/utils/file_handler.py index 3f4d7c67..be5f1f58 100644 --- a/src/ytdl_sub/utils/file_handler.py +++ b/src/ytdl_sub/utils/file_handler.py @@ -162,7 +162,7 @@ class FileHandlerTransactionLog: ------- str formatted to always look like a unix string """ - return str(path_str).replace(os.sep, '/') + return str(path_str).replace(os.sep, "/") def __init__(self): self.files_created: Dict[str, FileMetadata] = {} @@ -320,7 +320,9 @@ class FileHandlerTransactionLog: ) if self.is_empty: - lines.append(f"No new, modified, or removed files in '{self.format_path_str(output_directory)}'") + lines.append( + f"No new, modified, or removed files in '{self.format_path_str(output_directory)}'" + ) return "\n".join(lines) diff --git a/src/ytdl_sub/utils/file_lock.py b/src/ytdl_sub/utils/file_lock.py index 0b801e01..2e21acfe 100644 --- a/src/ytdl_sub/utils/file_lock.py +++ b/src/ytdl_sub/utils/file_lock.py @@ -11,14 +11,17 @@ from ytdl_sub.utils.system import IS_WINDOWS logger = Logger.get() if IS_WINDOWS: + @contextmanager def working_directory_lock(config: ConfigFile): + """Windows does not support working directory lock""" logger.info( "Working directory lock not supported in Windows. " "Ensure only one instance of ytdl-sub runs at once using working directory %s", config.config_options.working_directory, ) yield + else: import fcntl @@ -59,4 +62,3 @@ else: finally: fcntl.flock(lock_file, fcntl.LOCK_UN) lock_file.close() - diff --git a/src/ytdl_sub/utils/system.py b/src/ytdl_sub/utils/system.py index 75524d3c..eec08c90 100644 --- a/src/ytdl_sub/utils/system.py +++ b/src/ytdl_sub/utils/system.py @@ -1,4 +1,3 @@ - import sys IS_WINDOWS = sys.platform.startswith("win32") diff --git a/src/ytdl_sub/validators/file_path_validators.py b/src/ytdl_sub/validators/file_path_validators.py index 6c26b87e..0ba4e070 100644 --- a/src/ytdl_sub/validators/file_path_validators.py +++ b/src/ytdl_sub/validators/file_path_validators.py @@ -2,13 +2,15 @@ import os from pathlib import Path from typing import Dict -from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator, OverridesStringFormatterValidator +from ytdl_sub.validators.string_formatter_validators import OverridesStringFormatterValidator +from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator class StringFormatterFilePathValidator(StringFormatterValidator): _expected_value_type_name = "filepath" def apply_formatter(self, variable_dict: Dict[str, str]) -> str: + """Turn into a Path, then a string, to get correct directory separators""" return str(Path(super().apply_formatter(variable_dict))) @@ -16,4 +18,5 @@ class OverridesStringFormatterValidatorFilePathValidator(OverridesStringFormatte _expected_value_type_name = "static filepath" def apply_formatter(self, variable_dict: Dict[str, str]) -> str: + """Turn into a Path, then a string, to get correct directory separators""" return os.path.realpath(super().apply_formatter(variable_dict)) diff --git a/tests/e2e/conftest.py b/tests/e2e/conftest.py index f87b0123..e307abd5 100644 --- a/tests/e2e/conftest.py +++ b/tests/e2e/conftest.py @@ -15,7 +15,8 @@ from ytdl_sub.cli.main import main from ytdl_sub.config.config_file import ConfigFile from ytdl_sub.subscriptions.subscription import Subscription from ytdl_sub.subscriptions.subscription_download import SubscriptionDownload -from ytdl_sub.utils.file_handler import FileHandlerTransactionLog, FileHandler +from ytdl_sub.utils.file_handler import FileHandler +from ytdl_sub.utils.file_handler import FileHandlerTransactionLog from ytdl_sub.utils.logger import Logger from ytdl_sub.utils.yaml import load_yaml @@ -101,7 +102,9 @@ def timestamps_file_path(): "00:01:01 Part 5\n", ] - with tempfile.NamedTemporaryFile(mode="w", encoding="utf-8", suffix=".txt", delete=False) as tmp: + with tempfile.NamedTemporaryFile( + mode="w", encoding="utf-8", suffix=".txt", delete=False + ) as tmp: tmp.writelines(timestamps) try: diff --git a/tests/expected_transaction_log.py b/tests/expected_transaction_log.py index 4a68f90c..75646f6f 100644 --- a/tests/expected_transaction_log.py +++ b/tests/expected_transaction_log.py @@ -43,7 +43,9 @@ def assert_transaction_log_matches( # Read the expected summary file with open(transaction_log_path, "r", encoding="utf-8") as summary_file: - expected_summary = summary_file.read().format(output_directory=FileHandlerTransactionLog.format_path_str(output_directory)) + expected_summary = summary_file.read().format( + output_directory=FileHandlerTransactionLog.format_path_str(output_directory) + ) # Split, ensure there are the same number of new lines summary_lines: List[str] = summary.split("\n") diff --git a/tests/unit/utils/test_yaml.py b/tests/unit/utils/test_yaml.py index c3399018..b61cc413 100644 --- a/tests/unit/utils/test_yaml.py +++ b/tests/unit/utils/test_yaml.py @@ -44,6 +44,8 @@ def test_load_yaml_file_not_found(): def test_load_yaml_invalid_syntax(bad_yaml_file_path): with pytest.raises( InvalidYamlException, - match=re.escape(f"'{bad_yaml_file_path}' has invalid YAML, copy-paste it into a YAML checker to find the issue."), + match=re.escape( + f"'{bad_yaml_file_path}' has invalid YAML, copy-paste it into a YAML checker to find the issue." + ), ): load_yaml(file_path=bad_yaml_file_path)