Spaces:
Build error
Build error
import os | |
import sysconfig | |
import filecmp | |
import shutil | |
def sync_bits_and_bytes_files(): | |
""" | |
Check for "different" bitsandbytes Files and copy only if necessary. | |
This function is specific for Windows OS. | |
""" | |
# Only execute on Windows | |
if os.name != "nt": | |
print("This function is only applicable to Windows OS.") | |
return | |
try: | |
# Define source and destination directories | |
source_dir = os.path.join(os.getcwd(), "bitsandbytes_windows") | |
dest_dir_base = os.path.join(sysconfig.get_paths()["purelib"], "bitsandbytes") | |
# Clear file comparison cache | |
filecmp.clear_cache() | |
# Iterate over each file in source directory | |
for file in os.listdir(source_dir): | |
source_file_path = os.path.join(source_dir, file) | |
# Decide the destination directory based on file name | |
if file in ("main.py", "paths.py"): | |
dest_dir = os.path.join(dest_dir_base, "cuda_setup") | |
else: | |
dest_dir = dest_dir_base | |
# Copy file from source to destination, maintaining original file's metadata | |
print(f'Copy {source_file_path} to {dest_dir}') | |
shutil.copy2(source_file_path, dest_dir) | |
except FileNotFoundError as fnf_error: | |
print(f"File not found error: {fnf_error}") | |
except PermissionError as perm_error: | |
print(f"Permission error: {perm_error}") | |
except Exception as e: | |
print(f"An unexpected error occurred: {e}") | |
if __name__ == "__main__": | |
sync_bits_and_bytes_files() |