|
""" |
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
|
β Author: p3nGu1nZz β |
|
β Email: rawsonkara@gmail.com β |
|
β Copyright (c) 2025 Huggingface β |
|
β License: MIT β |
|
β This source file is subject to the terms and conditions β |
|
β defined in the file 'LICENSE', which is part of this sorcery β |
|
β code package. β |
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |
|
""" |
|
|
|
DONUT = """ |
|
β β β β β β β β’β£β£β£β£β£β£β£β β β β β β |
|
β β β β’β‘€β β β β β’β β β β β ⠻⠷⣦β‘β β |
|
β β β£°β β β β β‘β β β β’ β‘°β β β ⣨β‘β’¦β |
|
β β’β£―β ―β β β β β’β£€β£€β£€β£β‘β β β β β β‘ |
|
β β‘β β β β‘β β‘΄β β β ⠺⑻⣦β β β ²β β β’Ή |
|
β’⑷⑦β β β β’Έβ β β β β β£»β£Ώβ β β β β£Ώ |
|
β β Ώβ β β β β β’β β β β’⣴⣿β β’Άβ β β’ β‘ |
|
β β’β’β£€β£β β β β β β β β’©β‘β β β β β‘Ύβ |
|
β β β’§β£Έβ ±β β β β β β β β β’β‘ β’€β β£ β β β |
|
β β β β β »β’¬β‘©β‘β’β‘β‘β’β£ͺ⣡⣲⑾β β β β β |
|
β β β β β β β β β β β β β β β β β β β β β β β β |
|
""" |
|
|
|
CONFIG = { |
|
"url": "https://download.pytorch.org/whl/cu124", |
|
"cmds": [ |
|
"python -m pip install --upgrade pip", |
|
"python -m pip install --upgrade setuptools", |
|
"python -m pip install --upgrade wheel" |
|
], |
|
"pkg_common": ["tqdm==4.62.3", "pillow==8.4.0"], |
|
"pkg_cuda" : ["torch==2.5.1+cu124 --index-url https://download.pytorch.org/whl/cu124"], |
|
"pkg_cpu" : ["torch==2.5.1"], |
|
"pkg_indiv" : ["matplotlib", "numpy==2.1.3"] |
|
} |
|
|
|
import subprocess as sp |
|
import sys |
|
import importlib.metadata as imd |
|
|
|
def ensure_rich(): |
|
""" |
|
Ensure the rich library is installed. |
|
""" |
|
try: |
|
imd.version("rich") |
|
except imd.PackageNotFoundError: |
|
sp.check_call([sys.executable, "-m", "pip", "install", "rich"]) |
|
|
|
|
|
ensure_rich() |
|
|
|
from rich.console import Console |
|
from rich.text import Text |
|
|
|
console = Console() |
|
|
|
def run_cmd(cmd): |
|
""" |
|
Execute a shell command. |
|
""" |
|
try: |
|
sp.check_call(cmd, shell=True) |
|
except sp.CalledProcessError as err: |
|
console.print(f"[red]Error running command: {cmd}\n{err}[/red]") |
|
|
|
def install_pkg(pkg): |
|
""" |
|
Install a package using pip. |
|
""" |
|
try: |
|
sp.check_call([sys.executable, "-m", "pip", "install", pkg]) |
|
except sp.CalledProcessError as err: |
|
console.print(f"[red]Error installing package: {pkg}\n{err}[/red]") |
|
|
|
def is_installed(pkg): |
|
""" |
|
Check if a package is installed. |
|
""" |
|
try: |
|
imd.version(pkg) |
|
return True |
|
except imd.PackageNotFoundError: |
|
return False |
|
|
|
def display_donut(): |
|
""" |
|
Display the ASCII donut art. |
|
""" |
|
donut_text = Text(DONUT, style="bold magenta") |
|
console.print(donut_text) |
|
|
|
def upgrade_tools(): |
|
""" |
|
Upgrade pip, setuptools, and wheel. |
|
""" |
|
for cmd in CONFIG["cmds"]: |
|
run_cmd(cmd) |
|
|
|
def install_packages(packages): |
|
""" |
|
Install a list of packages if not already installed. |
|
""" |
|
for pkg in packages: |
|
if not is_installed(pkg.split("==")[0]): |
|
install_pkg(pkg) |
|
|
|
def ensure_numpy(): |
|
""" |
|
Ensure numpy is compatible. |
|
""" |
|
try: |
|
np_ver = imd.version("numpy") |
|
if not np_ver.startswith("2.1.3"): |
|
install_pkg("numpy==2.1.3") |
|
except imd.PackageNotFoundError: |
|
install_pkg("numpy==2.1.3") |
|
|
|
def main(): |
|
""" |
|
Main function to orchestrate the setup. |
|
""" |
|
display_donut() |
|
upgrade_tools() |
|
ensure_numpy() |
|
install_pkg("matplotlib") |
|
install_packages(CONFIG["pkg_common"]) |
|
try: |
|
import torch |
|
if torch.cuda.is_available(): |
|
install_packages(CONFIG["pkg_cuda"]) |
|
else: |
|
install_packages(CONFIG["pkg_cpu"]) |
|
except ImportError: |
|
install_packages(CONFIG["pkg_cpu"]) |
|
|
|
console.print("[bold green]All Your Donut Belong To Us![/bold green]\n") |
|
|
|
if __name__ == "__main__": |
|
main() |
|
|