import os import inspect import traceback from huggingface_hub import HfApi, create_repo, login,hf_hub_download from huggingface_hub.utils import RepositoryNotFoundError class HostingInHuggingFace: def __init__(self,base_path,hf_token=None): self.base_path = base_path self.hf_token = hf_token self.repo_id = 'jpkarthikeyan/Tourism-Prediction-Model-Space' def CreatingSpaceInHF(self): print(f"Function Name {inspect.currentframe().f_code.co_name}") api = HfApi() try: print(f"Checking for {self.repo_id} is correct or not") api.repo_info(repo_id = self.repo_id, repo_type='space', token = self.hf_token) print(f"Space {self.repo_id} already exists") except RepositoryNotFoundError: create_repo(repo_id=self.repo_id, repo_type='space', space_sdk='docker', private=False, token=self.hf_token) print(f"Space created in {self.repo_id}") except Exception as ex: print(f"Exception in creating space {ex}") traceback.print_exc() finally: print('-'*50) def UploadDeploymentFile(self): print(f"Function Name {inspect.currentframe().f_code.co_name}") try: api = HfApi(token=self.hf_token) directory_to_upload = os.path.join(self.base_path,'Deployment') print(f"Directory to upload {directory_to_upload} into HF Space {self.repo_id}") api.upload_folder(repo_id=self.repo_id, folder_path=directory_to_upload, repo_type='space') print(f"Successfully upload {directory_to_upload} into {self.repo_id}") program_files = self.base_path py_files = ['main.py','DataRegistration.py', 'DataPrepration.py', 'BuildingModels.py', 'HostingInHuggingFace.py'] for file in py_files: api.upload_file(path_or_fileobj=os.path.join(program_files,file), repo_id = self.repo_id,repo_type='space', path_in_repo='PythonFiles/', token=self.hf_token) return True except Exception as ex: print(f"Exception occured {ex}") print(traceback.print_exc()) return False finally: print('-'*50) def ToRunPipeline(self): try: self.CreatingSpaceInHF() if self.UploadDeploymentFile(): print('Deployment pipeline completed') return True else: print('Deployment pipeline failed') return False except Exception as ex: print(f"Exception occured {ex}") print(traceback.print_exc()) return False finally: print('-'*50)