From 31b98a7edc610315306ae9f36e70b1f8f391552c Mon Sep 17 00:00:00 2001 From: Nikhil Badyal Date: Wed, 5 Oct 2022 23:03:45 +0530 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=B7=20Made=20mypy=20strict?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .pre-commit-config.yaml | 2 ++ main.py | 2 +- src/downloader.py | 27 ++++++++++++++------------- src/parser.py | 6 +++++- src/patches.py | 12 ++++++++---- 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c81fa8a..5fc7c2b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -51,6 +51,8 @@ repos: rev: v0.971 hooks: - id: mypy + args: + - '--strict' additional_dependencies: [ types-requests ] diff --git a/main.py b/main.py index 253e73a..d8d1e54 100644 --- a/main.py +++ b/main.py @@ -20,7 +20,7 @@ def main() -> None: try: logger.info("Trying to build %s" % app) app_all_patches, version, is_experimental = patcher.get_app_configs(app) - version = downloader.download_apk_to_patch(version, app, patcher) + version = downloader.download_apk_to_patch(version, app) patcher.include_and_exclude_patches(app, parser, app_all_patches) logger.info(f"Downloaded {app}, version {version}") parser.patch_app(app=app, version=version, is_experimental=is_experimental) diff --git a/src/downloader.py b/src/downloader.py index 5478897..7e14b61 100644 --- a/src/downloader.py +++ b/src/downloader.py @@ -4,9 +4,10 @@ from concurrent.futures import ThreadPoolExecutor from pathlib import Path from queue import PriorityQueue from time import perf_counter -from typing import Tuple +from typing import Any, Tuple import requests +from environs import Env from loguru import logger from requests import Session from selectolax.lexbor import LexborHTMLParser @@ -14,9 +15,9 @@ from tqdm import tqdm class Downloader(object): - def __init__(self, env): + def __init__(self, env: Env): self._CHUNK_SIZE = 2**21 * 5 - self._QUEUE: PriorityQueue[Tuple] = PriorityQueue() + self._QUEUE: PriorityQueue[Tuple[float, str]] = PriorityQueue() self._QUEUE_LENGTH = 0 self.temp_folder = Path("apks") @@ -82,7 +83,7 @@ class Downloader(object): self._QUEUE.put((perf_counter() - start, file_name)) logger.debug(f"Downloaded {file_name}") - def extract_download_link(self, page: str, app: str): + def extract_download_link(self, page: str, app: str) -> None: logger.debug(f"Extracting download link from\n{page}") parser = LexborHTMLParser(self.session.get(page).text) @@ -97,7 +98,7 @@ class Downloader(object): self._download(self.apk_mirror + href, f"{app}.apk") logger.debug("Finished Extracting link and downloading") - def get_download_page(self, parser, main_page): + def get_download_page(self, parser: LexborHTMLParser, main_page: str) -> str: apm = parser.css(".apkm-badge") sub_url = "" for is_apm in apm: @@ -113,7 +114,7 @@ class Downloader(object): download_url = self.apk_mirror + sub_url return download_url - def __upto_down_downloader(self, app: str) -> str: + def __upto_down_downloader(self, app: str) -> Any: page = "https://spotify.en.uptodown.com/android/download" parser = LexborHTMLParser(self.session.get(page).text) main_page = parser.css_first("#detail-download-button") @@ -123,7 +124,7 @@ class Downloader(object): logger.debug(f"Downloaded {app} apk from apkmirror_specific_version in rt") return app_version - def apkmirror_specific_version(self, app: str, version: str, patcher) -> str: + def apkmirror_specific_version(self, app: str, version: str) -> str: logger.debug(f"Trying to download {app},specific version {version}") version = version.replace(".", "-") main_page = f"{self.apk_mirror_version_urls.get(app)}-{version}-release/" @@ -133,7 +134,7 @@ class Downloader(object): logger.debug(f"Downloaded {app} apk from apkmirror_specific_version") return version - def apkmirror_latest_version(self, app: str) -> str: + def apkmirror_latest_version(self, app: str) -> Any: logger.debug(f"Trying to download {app}'s latest version from apkmirror") page = self.apk_mirror_urls.get(app) if not page: @@ -187,17 +188,17 @@ class Downloader(object): executor.map(lambda repo: self.repository(*repo), assets) logger.info("Downloaded revanced microG ,cli, integrations and patches.") - def upto_down_downloader(self, app: str) -> str: + def upto_down_downloader(self, app: str) -> Any: return self.__upto_down_downloader(app) - def download_from_apkmirror(self, version: str, app: str, patches) -> str: + def download_from_apkmirror(self, version: str, app: str) -> Any: if version and version != "latest": - return self.apkmirror_specific_version(app, version, patches) + return self.apkmirror_specific_version(app, version) else: return self.apkmirror_latest_version(app) - def download_apk_to_patch(self, version: str, app: str, patches) -> str: + def download_apk_to_patch(self, version: str, app: str) -> Any: if app in self.upto_down: return self.upto_down_downloader(app) else: - return self.download_from_apkmirror(version, app, patches) + return self.download_from_apkmirror(version, app) diff --git a/src/parser.py b/src/parser.py index 88530e6..2584221 100644 --- a/src/parser.py +++ b/src/parser.py @@ -1,13 +1,17 @@ import sys +from pathlib import Path from subprocess import PIPE, Popen from time import perf_counter from typing import Any, List +from environs import Env from loguru import logger +from src.patches import Patches + class Parser(object): - def __init__(self, patcher, env, temp_folder) -> None: + def __init__(self, patcher: Patches, env: Env, temp_folder: Path) -> None: self._PATCHES: List[str] = [] self._EXCLUDED: List[str] = [] self.patcher = patcher diff --git a/src/patches.py b/src/patches.py index 974ea3d..c6899c7 100644 --- a/src/patches.py +++ b/src/patches.py @@ -2,9 +2,11 @@ import subprocess import sys from typing import Any, Dict, List, Tuple +from environs import Env from loguru import logger from requests import Session +from src.parser import Parser from src.utils import supported_apps @@ -23,7 +25,7 @@ class Patches(object): exit(-1) logger.debug("Cool!! Java is available") - def fetch_patches(self): + def fetch_patches(self) -> None: session = Session() logger.debug("fetching all patches") @@ -87,7 +89,7 @@ class Patches(object): n_patches = len(getattr(self, app_id)) logger.debug(f"Total patches in {app_name} are {n_patches}") - def __init__(self, env) -> None: + def __init__(self, env: Env) -> None: self.env = env self.apps = env.list("PATCH_APPS", supported_apps) self.build_extended = env.bool("BUILD_EXTENDED", False) @@ -118,7 +120,9 @@ class Patches(object): logger.debug("No recommended version.") return patches, version - def include_and_exclude_patches(self, app, arg_parser, app_patches) -> None: + def include_and_exclude_patches( + self, app: str, arg_parser: Parser, app_patches: List[Any] + ) -> None: logger.debug(f"Excluding patches for app {app}") if self.build_extended and app in self.extended_apps: excluded_patches = self.env.list( @@ -136,7 +140,7 @@ class Patches(object): else: logger.debug(f"No excluded patches for {app}") - def get_app_configs(self, app) -> Any: + def get_app_configs(self, app: str) -> Any: experiment = False total_patches, recommended_version = self.get(app=app) env_version = self.env.str(f"{app}_VERSION".upper(), None)