import os import requests import yaml from colorama import Fore from git import Repo def clean_input(prompt: str = ""): try: return input(prompt) except KeyboardInterrupt: print("You interrupted Auto-GPT") print("Quitting...") exit(0) def validate_yaml_file(file: str): try: with open(file, encoding="utf-8") as fp: yaml.load(fp.read(), Loader=yaml.FullLoader) except FileNotFoundError: return (False, f"The file {Fore.CYAN}`{file}`{Fore.RESET} wasn't found") except yaml.YAMLError as e: return ( False, f"There was an issue while trying to read with your AI Settings file: {e}", ) return (True, f"Successfully validated {Fore.CYAN}`{file}`{Fore.RESET}!") def readable_file_size(size, decimal_places=2): """Converts the given size in bytes to a readable format. Args: size: Size in bytes decimal_places (int): Number of decimal places to display """ for unit in ["B", "KB", "MB", "GB", "TB"]: if size < 1024.0: break size /= 1024.0 return f"{size:.{decimal_places}f} {unit}" def get_bulletin_from_web() -> str: try: response = requests.get( "https://raw.githubusercontent.com/Significant-Gravitas/Auto-GPT/master/BULLETIN.md" ) if response.status_code == 200: return response.text except: return "" def get_current_git_branch() -> str: try: repo = Repo(search_parent_directories=True) branch = repo.active_branch return branch.name except: return "" def get_latest_bulletin() -> str: exists = os.path.exists("CURRENT_BULLETIN.md") current_bulletin = "" if exists: current_bulletin = open("CURRENT_BULLETIN.md", "r", encoding="utf-8").read() new_bulletin = get_bulletin_from_web() is_new_news = new_bulletin != current_bulletin if new_bulletin and is_new_news: open("CURRENT_BULLETIN.md", "w", encoding="utf-8").write(new_bulletin) return f" {Fore.RED}::UPDATED:: {Fore.CYAN}{new_bulletin}{Fore.RESET}" return current_bulletin