Added comments
This commit is contained in:
		| @@ -2,16 +2,35 @@ import base64 | ||||
|  | ||||
|  | ||||
| class CredentialManager: | ||||
|     """ | ||||
|     Handles credentials | ||||
|     """ | ||||
|  | ||||
|     @staticmethod | ||||
|     def encrypt(string: str) -> str: | ||||
|         """ | ||||
|         Encode with base64 | ||||
|         :param string: | ||||
|         :return: | ||||
|         """ | ||||
|         return base64.b64encode(string.encode('utf-8')).decode('utf-8') | ||||
|  | ||||
|     @staticmethod | ||||
|     def decrypt(string: str) -> str: | ||||
|         """ | ||||
|         Decode with base64 | ||||
|         :param string: | ||||
|         :return: | ||||
|         """ | ||||
|         return base64.b64decode(string).decode('utf-8') | ||||
|  | ||||
|     @staticmethod | ||||
|     def build_string(string: str, credentials: str): | ||||
|         """ | ||||
|         Builds string with credentials in it | ||||
|         :param string: | ||||
|         :param credentials: | ||||
|         :return: | ||||
|         """ | ||||
|         return string.replace('$credentials', CredentialManager.decrypt(credentials)) | ||||
|  | ||||
|   | ||||
| @@ -5,6 +5,9 @@ from typing import Optional | ||||
|  | ||||
|  | ||||
| class Pip: | ||||
|     """ | ||||
|     Executes pip commands | ||||
|     """ | ||||
|     _executable = sys.executable | ||||
|  | ||||
|     """ | ||||
| @@ -21,11 +24,20 @@ class Pip: | ||||
|  | ||||
|     @classmethod | ||||
|     def set_executable(cls, executable: str): | ||||
|         """ | ||||
|         Sets the executable | ||||
|         :param executable: | ||||
|         :return: | ||||
|         """ | ||||
|         if executable is not None: | ||||
|             cls._executable = executable | ||||
|  | ||||
|     @classmethod | ||||
|     def reset_executable(cls): | ||||
|         """ | ||||
|         Resets the executable to system standard | ||||
|         :return: | ||||
|         """ | ||||
|         cls._executable = sys.executable | ||||
|  | ||||
|     """ | ||||
| @@ -34,6 +46,11 @@ class Pip: | ||||
|  | ||||
|     @classmethod | ||||
|     def get_package(cls, package: str) -> Optional[str]: | ||||
|         """ | ||||
|         Gets given package py local pip list | ||||
|         :param package: | ||||
|         :return: | ||||
|         """ | ||||
|         result = None | ||||
|         with suppress(Exception): | ||||
|             result = subprocess.check_output([cls._executable, "-m", "pip", "show", package], stderr=subprocess.DEVNULL) | ||||
| @@ -52,10 +69,23 @@ class Pip: | ||||
|  | ||||
|     @classmethod | ||||
|     def get_outdated(cls) -> bytes: | ||||
|         """ | ||||
|         Gets table of outdated packages | ||||
|         :return: | ||||
|         """ | ||||
|         return subprocess.check_output([cls._executable, "-m", "pip", "list", "--outdated"]) | ||||
|  | ||||
|     @classmethod | ||||
|     def install(cls, package: str, *args, source: str = None, stdout=None, stderr=None): | ||||
|         """ | ||||
|         Installs given package | ||||
|         :param package: | ||||
|         :param args: | ||||
|         :param source: | ||||
|         :param stdout: | ||||
|         :param stderr: | ||||
|         :return: | ||||
|         """ | ||||
|         pip_args = [cls._executable, "-m", "pip", "install"] | ||||
|  | ||||
|         for arg in args: | ||||
| @@ -70,4 +100,11 @@ class Pip: | ||||
|  | ||||
|     @classmethod | ||||
|     def uninstall(cls, package: str, stdout=None, stderr=None): | ||||
|         """ | ||||
|         Uninstalls given package | ||||
|         :param package: | ||||
|         :param stdout: | ||||
|         :param stderr: | ||||
|         :return: | ||||
|         """ | ||||
|         subprocess.run([cls._executable, "-m", "pip", "uninstall", "--yes", package], stdout=stdout, stderr=stderr) | ||||
|   | ||||
| @@ -2,9 +2,17 @@ import re | ||||
|  | ||||
|  | ||||
| class String: | ||||
|     """ | ||||
|     Useful functions for strings | ||||
|     """ | ||||
|  | ||||
|     @staticmethod | ||||
|     def convert_to_snake_case(name: str) -> str: | ||||
|         """ | ||||
|         Converts string to snake case | ||||
|         :param name: | ||||
|         :return: | ||||
|         """ | ||||
|         pattern1 = re.compile(r'(.)([A-Z][a-z]+)') | ||||
|         pattern2 = re.compile(r'([a-z0-9])([A-Z])') | ||||
|         file_name = re.sub(pattern1, r'\1_\2', name) | ||||
| @@ -12,8 +20,18 @@ class String: | ||||
|  | ||||
|     @staticmethod | ||||
|     def first_to_upper(string: str) -> str: | ||||
|         """ | ||||
|         Converts first char to upper | ||||
|         :param string: | ||||
|         :return: | ||||
|         """ | ||||
|         return f'{string[0].upper()}{string[1:]}' | ||||
|  | ||||
|     @staticmethod | ||||
|     def first_to_lower(string: str) -> str: | ||||
|         """ | ||||
|         Converts first char to lower | ||||
|         :param string: | ||||
|         :return: | ||||
|         """ | ||||
|         return f'{string[0].lower()}{string[1:]}' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user