import logs import inspect import traceback from huggingface_hub import HfApi, create_repo from huggingface_hub.utils import RepositoryNotFoundError from configuration import Configuration class HostingInHuggingFace: def __init__(self): self.base_path = Configuration.PROJECT_ROOT self.hf_token = Configuration.HF_TOKEN self.repo_id = 'jpkarthikeyan/FlyKiteAirlines' def CreatingSpaceInHF(self): logs.logger.info(f"Function Name {inspect.currentframe().f_code.co_name}") api = HfApi() try: logs.logger.info(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) logs.logger.info(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) logs.logger.info(f"Space created in {self.repo_id}") except Exception as ex: logs.logger.info(f"Exception in creating space {ex}") logs.logger.info(traceback.print_exc()) finally: logs.logger.info('-'*50) def UploadDeploymentFile(self): logs.logger.info(f"Function Name {inspect.currentframe().f_code.co_name}") try: api = HfApi(token=self.hf_token) directory_to_upload = self.base_path logs.logger.info(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') logs.logger.info(f"Successfully upload {directory_to_upload} into {self.repo_id}") return True except Exception as ex: logs.logger.info(f"Exception occured {ex}") logs.logger.info(traceback.print_exc()) return False finally: logs.logger.info('-'*50) def ToRunPipeline(self): try: self.CreatingSpaceInHF() if self.UploadDeploymentFile(): logs.logger.info('Deployment pipeline completed') return True else: logs.logger.info('Deployment pipeline failed') return False except Exception as ex: logs.logger.info(f"Exception occured {ex}") logs.logger.info(traceback.print_exc()) return False finally: logs.logger.info('-'*50) if __name__ == '__main__': hosting = HostingInHuggingFace() hosting.ToRunPipeline()