From 060af7ff044e2598d2368313055c4f738d2bf6b9 Mon Sep 17 00:00:00 2001 From: Zedifus Date: Sat, 18 Mar 2023 20:24:12 +0000 Subject: [PATCH] Correct lint issues on SteamCMD class --- .../steamcmd/{SteamCMD.py => steamcmd.py} | 58 ++++++++++--------- ...eam_CMD_command.py => steamcmd_command.py} | 0 2 files changed, 31 insertions(+), 27 deletions(-) rename app/classes/steamcmd/{SteamCMD.py => steamcmd.py} (86%) rename app/classes/steamcmd/{Steam_CMD_command.py => steamcmd_command.py} (100%) diff --git a/app/classes/steamcmd/SteamCMD.py b/app/classes/steamcmd/steamcmd.py similarity index 86% rename from app/classes/steamcmd/SteamCMD.py rename to app/classes/steamcmd/steamcmd.py index 5fcf7d4e..34acdf2f 100644 --- a/app/classes/steamcmd/SteamCMD.py +++ b/app/classes/steamcmd/steamcmd.py @@ -1,11 +1,13 @@ import os import platform import zipfile +import tarfile import subprocess import urllib.request -from app.classes.steamcmd.Steam_CMD_command import SteamCMD_command from getpass import getpass +from app.classes.steamcmd.steamcmd_command import SteamCMD_command + package_links = { "Windows": { @@ -50,7 +52,10 @@ class SteamCMD: self.platform = platform.system() if self.platform not in ["Windows", "Linux"]: raise NotImplementedError( - message=f"Non supported operating system. Expected Windows, or Linux, got {self.platform}" + message=( + f"Non supported operating system. " + f"Expected Windows, or Linux, got {self.platform}" + ) ) self.steamcmd_url = package_links[self.platform]["url"] @@ -77,9 +82,9 @@ class SteamCMD: f.write(data) return data except Exception as e: - raise Exception( + raise FileNotFoundError( message=f"An unknown exception occurred during downloading. {e}" - ) + ) from e def _extract_steamcmd(self): """ @@ -91,8 +96,6 @@ class SteamCMD: f.extractall(self._installation_path) elif self.platform == "Linux": - import tarfile - with tarfile.open(self.zip, "r:gz") as f: f.extractall(self._installation_path) @@ -149,9 +152,9 @@ class SteamCMD: ) return else: - raise Exception( + raise SystemError( message=f"Failed to install, check error code {e.returncode}" - ) + ) from e return @@ -166,8 +169,8 @@ class SteamCMD: self._uname = uname if uname else input("Please enter steam username: ") self._passw = passw if passw else getpass("Please enter steam password: ") - sc = SteamCMD_command() - return self.execute(sc) + steam_command = SteamCMD_command() + return self.execute(steam_command) def app_update( self, @@ -181,20 +184,20 @@ class SteamCMD: Installer function for apps. :param app_id: The Steam ID for the app you want to install :param install_dir: Optional custom installation directory. - :param validate: Optional parameter for validation. Turn this on when updating something. + :param validate: Optional. Turn this on when updating something. :param beta: Optional parameter for running a beta branch. :param betapassword: Optional parameter for entering beta password. :return: Status code of child process. """ - sc = SteamCMD_command() + steam_command = SteamCMD_command() if install_dir: - sc.force_install_dir(install_dir) - sc.app_update(app_id, validate, beta, betapassword) + steam_command.force_install_dir(install_dir) + steam_command.app_update(app_id, validate, beta, betapassword) self._print_log( f"Downloading item {app_id}", f"into {install_dir} with validate set to {validate}", ) - return self.execute(sc) + return self.execute(steam_command) def workshop_update( self, @@ -205,33 +208,33 @@ class SteamCMD: n_tries: int = 5, ): """ - Installer function for workshop content. Retries multiple times on timeout due to valves' - stupid timeout on large downloads. + Installer function for workshop content. Retries multiple times on timeout + due to valves' timeout on large downloads. :param app_id: The parent application ID :param workshop_id: The ID for workshop content. Can be found in the url. :param install_dir: Optional custom installation directory. - :param validate: Optional parameter for validation. Turn this on when updating something. - :param n_tries: Counter for how many redownloads it can make before officially timing out. + :param validate: Optional. Turn this on when updating something. + :param n_tries: Counter for how many redownloads it can make before timing out. :return: Status code of child process. """ - sc = SteamCMD_command() + steam_command = SteamCMD_command() if install_dir: - sc.force_install_dir(install_dir) - sc.workshop_download_item(app_id, workshop_id, validate) - return self.execute(sc, n_tries) + steam_command.force_install_dir(install_dir) + steam_command.workshop_download_item(app_id, workshop_id, validate) + return self.execute(steam_command, n_tries) def execute(self, cmd: SteamCMD_command, n_tries: int = 1): """ Executes a SteamCMD_command, with added actions occurring sequentially. - May retry multiple times on timeout due to valves' stupid timeout on large downloads. + May retry multiple times on timeout due to valves' timeout on large downloads. :param cmd: Sequence of commands to execute :param n_tries: Number of times the command will be tried. :return: Status code of child process. """ if n_tries == 0: raise TimeoutError( - message="""Error executing command, max number of timeout tries exceeded! + message="""Error executing command, max number of retries exceeded! Consider increasing the n_tries parameter if the download is particularly large""" ) @@ -247,7 +250,8 @@ class SteamCMD: return subprocess.check_call(" ".join(params), shell=True) except subprocess.CalledProcessError as e: - # SteamCMD has a habit of timing out large downloads, so retry on timeout for the remainder of n_tries. + # SteamCMD has a habit of timing out large downloads, + # so retry on timeout for the remainder of n_tries. if e.returncode == 10: self._print_log( f"Download timeout! Tries remaining: {n_tries}. Retrying..." @@ -264,4 +268,4 @@ class SteamCMD: raise SystemError( message=f"Steamcmd was unable to run. exit code was {e.returncode}" - ) + ) from e diff --git a/app/classes/steamcmd/Steam_CMD_command.py b/app/classes/steamcmd/steamcmd_command.py similarity index 100% rename from app/classes/steamcmd/Steam_CMD_command.py rename to app/classes/steamcmd/steamcmd_command.py