👷 Made mypy strict

This commit is contained in:
Nikhil Badyal
2022-10-05 23:03:45 +05:30
parent 31dc22f320
commit 31b98a7edc
5 changed files with 30 additions and 19 deletions
+2
View File
@@ -51,6 +51,8 @@ repos:
rev: v0.971 rev: v0.971
hooks: hooks:
- id: mypy - id: mypy
args:
- '--strict'
additional_dependencies: [ types-requests ] additional_dependencies: [ types-requests ]
+1 -1
View File
@@ -20,7 +20,7 @@ def main() -> None:
try: try:
logger.info("Trying to build %s" % app) logger.info("Trying to build %s" % app)
app_all_patches, version, is_experimental = patcher.get_app_configs(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) patcher.include_and_exclude_patches(app, parser, app_all_patches)
logger.info(f"Downloaded {app}, version {version}") logger.info(f"Downloaded {app}, version {version}")
parser.patch_app(app=app, version=version, is_experimental=is_experimental) parser.patch_app(app=app, version=version, is_experimental=is_experimental)
+14 -13
View File
@@ -4,9 +4,10 @@ from concurrent.futures import ThreadPoolExecutor
from pathlib import Path from pathlib import Path
from queue import PriorityQueue from queue import PriorityQueue
from time import perf_counter from time import perf_counter
from typing import Tuple from typing import Any, Tuple
import requests import requests
from environs import Env
from loguru import logger from loguru import logger
from requests import Session from requests import Session
from selectolax.lexbor import LexborHTMLParser from selectolax.lexbor import LexborHTMLParser
@@ -14,9 +15,9 @@ from tqdm import tqdm
class Downloader(object): class Downloader(object):
def __init__(self, env): def __init__(self, env: Env):
self._CHUNK_SIZE = 2**21 * 5 self._CHUNK_SIZE = 2**21 * 5
self._QUEUE: PriorityQueue[Tuple] = PriorityQueue() self._QUEUE: PriorityQueue[Tuple[float, str]] = PriorityQueue()
self._QUEUE_LENGTH = 0 self._QUEUE_LENGTH = 0
self.temp_folder = Path("apks") self.temp_folder = Path("apks")
@@ -82,7 +83,7 @@ class Downloader(object):
self._QUEUE.put((perf_counter() - start, file_name)) self._QUEUE.put((perf_counter() - start, file_name))
logger.debug(f"Downloaded {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}") logger.debug(f"Extracting download link from\n{page}")
parser = LexborHTMLParser(self.session.get(page).text) parser = LexborHTMLParser(self.session.get(page).text)
@@ -97,7 +98,7 @@ class Downloader(object):
self._download(self.apk_mirror + href, f"{app}.apk") self._download(self.apk_mirror + href, f"{app}.apk")
logger.debug("Finished Extracting link and downloading") 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") apm = parser.css(".apkm-badge")
sub_url = "" sub_url = ""
for is_apm in apm: for is_apm in apm:
@@ -113,7 +114,7 @@ class Downloader(object):
download_url = self.apk_mirror + sub_url download_url = self.apk_mirror + sub_url
return download_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" page = "https://spotify.en.uptodown.com/android/download"
parser = LexborHTMLParser(self.session.get(page).text) parser = LexborHTMLParser(self.session.get(page).text)
main_page = parser.css_first("#detail-download-button") 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") logger.debug(f"Downloaded {app} apk from apkmirror_specific_version in rt")
return app_version 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}") logger.debug(f"Trying to download {app},specific version {version}")
version = version.replace(".", "-") version = version.replace(".", "-")
main_page = f"{self.apk_mirror_version_urls.get(app)}-{version}-release/" 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") logger.debug(f"Downloaded {app} apk from apkmirror_specific_version")
return 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") logger.debug(f"Trying to download {app}'s latest version from apkmirror")
page = self.apk_mirror_urls.get(app) page = self.apk_mirror_urls.get(app)
if not page: if not page:
@@ -187,17 +188,17 @@ class Downloader(object):
executor.map(lambda repo: self.repository(*repo), assets) executor.map(lambda repo: self.repository(*repo), assets)
logger.info("Downloaded revanced microG ,cli, integrations and patches.") 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) 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": if version and version != "latest":
return self.apkmirror_specific_version(app, version, patches) return self.apkmirror_specific_version(app, version)
else: else:
return self.apkmirror_latest_version(app) 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: if app in self.upto_down:
return self.upto_down_downloader(app) return self.upto_down_downloader(app)
else: else:
return self.download_from_apkmirror(version, app, patches) return self.download_from_apkmirror(version, app)
+5 -1
View File
@@ -1,13 +1,17 @@
import sys import sys
from pathlib import Path
from subprocess import PIPE, Popen from subprocess import PIPE, Popen
from time import perf_counter from time import perf_counter
from typing import Any, List from typing import Any, List
from environs import Env
from loguru import logger from loguru import logger
from src.patches import Patches
class Parser(object): 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._PATCHES: List[str] = []
self._EXCLUDED: List[str] = [] self._EXCLUDED: List[str] = []
self.patcher = patcher self.patcher = patcher
+8 -4
View File
@@ -2,9 +2,11 @@ import subprocess
import sys import sys
from typing import Any, Dict, List, Tuple from typing import Any, Dict, List, Tuple
from environs import Env
from loguru import logger from loguru import logger
from requests import Session from requests import Session
from src.parser import Parser
from src.utils import supported_apps from src.utils import supported_apps
@@ -23,7 +25,7 @@ class Patches(object):
exit(-1) exit(-1)
logger.debug("Cool!! Java is available") logger.debug("Cool!! Java is available")
def fetch_patches(self): def fetch_patches(self) -> None:
session = Session() session = Session()
logger.debug("fetching all patches") logger.debug("fetching all patches")
@@ -87,7 +89,7 @@ class Patches(object):
n_patches = len(getattr(self, app_id)) n_patches = len(getattr(self, app_id))
logger.debug(f"Total patches in {app_name} are {n_patches}") 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.env = env
self.apps = env.list("PATCH_APPS", supported_apps) self.apps = env.list("PATCH_APPS", supported_apps)
self.build_extended = env.bool("BUILD_EXTENDED", False) self.build_extended = env.bool("BUILD_EXTENDED", False)
@@ -118,7 +120,9 @@ class Patches(object):
logger.debug("No recommended version.") logger.debug("No recommended version.")
return patches, 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}") logger.debug(f"Excluding patches for app {app}")
if self.build_extended and app in self.extended_apps: if self.build_extended and app in self.extended_apps:
excluded_patches = self.env.list( excluded_patches = self.env.list(
@@ -136,7 +140,7 @@ class Patches(object):
else: else:
logger.debug(f"No excluded patches for {app}") 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 experiment = False
total_patches, recommended_version = self.get(app=app) total_patches, recommended_version = self.get(app=app)
env_version = self.env.str(f"{app}_VERSION".upper(), None) env_version = self.env.str(f"{app}_VERSION".upper(), None)