ernestmindres commited on
Commit
c205b2f
·
verified ·
1 Parent(s): b921fed

Update huggingface_storage.py

Browse files
Files changed (1) hide show
  1. huggingface_storage.py +25 -22
huggingface_storage.py CHANGED
@@ -24,44 +24,47 @@ def upload_project_folder_to_hf(
24
  """
25
  Téléverse un dossier local (le projet utilisateur) vers un dossier spécifique
26
  dans le Dataset Hugging Face, en une seule commit, en utilisant deploy_id comme path_in_repo.
27
-
28
  :param local_folder_path: Chemin absolu du dossier local à téléverser (ex: temp_uploads/abc-123).
29
  :param deploy_id: L'ID unique du projet (utilisé comme nom de dossier dans le repo HF).
30
  :param repo_id: L'ID complet du repo HF (si non fourni, utilise HF_DATASET_REPO_ID).
31
- :return: Tuple (succès: bool, message: str, full_repo_path: Optional[str])
32
  """
33
  repo_id = repo_id if repo_id else HF_DATASET_REPO_ID
34
 
35
  if not repo_id:
36
- logger.error("HF_DATASET_REPO_ID n'est pas configuré.")
37
- return False, "Erreur de configuration: Repository Hugging Face non défini.", None
38
 
39
- if not os.path.isdir(local_folder_path):
40
- return False, f"Erreur: Le dossier local à téléverser n'existe pas: {local_folder_path}", None
41
-
42
- # Le chemin dans le repo est l'ID du projet (le dossier racine)
43
- path_in_repo = deploy_id
44
-
45
  try:
46
- # upload_folder assure le téléversement du dossier en UN SEUL COMMIT
47
- commit_url = api.upload_folder(
 
 
 
 
 
 
 
48
  folder_path=local_folder_path,
49
  repo_id=repo_id,
50
- path_in_repo=path_in_repo,
51
- repo_type="dataset",
52
- commit_message=f"Ajout du projet utilisateur ID: {deploy_id}",
 
53
  )
54
 
55
- full_repo_path = f"{repo_id}@{path_in_repo}"
56
- logger.info(f"Téléversement réussi. URL de commit: {commit_url}")
57
- return True, "Fichiers téléversés avec succès sur Hugging Face.", full_repo_path
 
58
 
59
  except HfHubHTTPError as e:
60
- logger.error(f"Erreur HTTP lors du téléversement HF pour {deploy_id}: {e}")
61
- return False, f"Échec du téléversement Hugging Face (Erreur HTTP): {str(e)}", None
 
62
  except Exception as e:
63
- logger.error(f"Erreur inconnue lors du téléversement HF pour {deploy_id}: {e}")
64
- return False, f"Échec du téléversement Hugging Face: {str(e)}", None
65
 
66
 
67
  def get_project_files_from_hf(
 
24
  """
25
  Téléverse un dossier local (le projet utilisateur) vers un dossier spécifique
26
  dans le Dataset Hugging Face, en une seule commit, en utilisant deploy_id comme path_in_repo.
27
+
28
  :param local_folder_path: Chemin absolu du dossier local à téléverser (ex: temp_uploads/abc-123).
29
  :param deploy_id: L'ID unique du projet (utilisé comme nom de dossier dans le repo HF).
30
  :param repo_id: L'ID complet du repo HF (si non fourni, utilise HF_DATASET_REPO_ID).
31
+ :return: (Succès: bool, Message: str, Chemin complet du repo: Optional[str])
32
  """
33
  repo_id = repo_id if repo_id else HF_DATASET_REPO_ID
34
 
35
  if not repo_id:
36
+ return False, "Erreur de configuration: Repository Hugging Face non défini (HF_DATASET_REPO_ID manquant).", None
 
37
 
 
 
 
 
 
 
38
  try:
39
+ if not os.path.isdir(local_folder_path):
40
+ return False, f"Erreur: Le dossier local pour le déploiement ID '{deploy_id}' est introuvable.", None
41
+
42
+ # path_in_repo est le chemin où les fichiers seront stockés dans le repo (le dossier du projet)
43
+ hf_folder_path = f"{deploy_id}"
44
+
45
+ logger.info(f"Début du téléversement de {local_folder_path} vers HF repo: {repo_id}/{hf_folder_path}")
46
+
47
+ api.upload_folder(
48
  folder_path=local_folder_path,
49
  repo_id=repo_id,
50
+ path_in_repo=hf_folder_path,
51
+ repo_type="dataset",
52
+ commit_message=f"Ajout du site web statique pour le projet ID: {deploy_id}",
53
+ delete_old_files=True
54
  )
55
 
56
+ full_repo_path = f"https://huggingface.co/datasets/{repo_id}/tree/main/{deploy_id}"
57
+ logger.info(f"Téléversement HF réussi pour le projet {deploy_id}.")
58
+
59
+ return True, "Téléversement vers Hugging Face réussi.", full_repo_path
60
 
61
  except HfHubHTTPError as e:
62
+ error_message = f"Erreur API Hugging Face (vérifiez votre jeton d'API et les permissions): {e.response.text}"
63
+ logger.error(error_message)
64
+ return False, error_message, None
65
  except Exception as e:
66
+ logger.error(f"Erreur lors du téléchargement HF pour {deploy_id}: {e}")
67
+ return False, f"Échec du téléchargement Hugging Face: {str(e)}", None
68
 
69
 
70
  def get_project_files_from_hf(