Hub Python Library documentation

Utilitaires

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilitaires

Configurer la journalisation

Le package huggingface_hub expose un utilitaire logging pour contrôler le niveau de journalisation du package lui-même. Vous pouvez l’importer ainsi :

from huggingface_hub import logging

Ensuite, vous pouvez définir le niveau de verbosité afin de mettre à jour la quantité de journaux que vous verrez :

from huggingface_hub import logging

logging.set_verbosity_error()
logging.set_verbosity_warning()
logging.set_verbosity_info()
logging.set_verbosity_debug()

logging.set_verbosity(...)

Les niveaux doivent être compris comme suit :

  • error : n’affiche que les journaux critiques concernant l’utilisation qui peuvent entraîner une erreur ou un comportement inattendu.
  • warning : affiche les journaux qui ne sont pas critiques mais dont l’utilisation peut entraîner un comportement inattendu. De plus, des journaux informatifs importants peuvent être affichés.
  • info : affiche la plupart des journaux, y compris certains journaux détaillés concernant ce qui se passe en coulisses. Si quelque chose se comporte de manière inattendue, nous recommandons de passer le niveau de verbosité à celui-ci afin d’obtenir plus d’informations.
  • debug : affiche tous les journaux, y compris certains journaux internes qui peuvent être utilisés pour suivre exactement ce qui se passe sous le capot.

huggingface_hub.utils.logging.get_verbosity

< >

( )

Retourner le niveau actuel du journal racine du HuggingFace Hub.

Le HuggingFace Hub dispose des niveaux de journalisation suivants :

  • huggingface_hub.logging.CRITICAL, huggingface_hub.logging.FATAL
  • huggingface_hub.logging.ERROR
  • huggingface_hub.logging.WARNING, huggingface_hub.logging.WARN
  • huggingface_hub.logging.INFO
  • huggingface_hub.logging.DEBUG

huggingface_hub.utils.logging.set_verbosity

< >

( verbosity: int )

Paramètres

  • verbosity (int) — Niveau de journalisation, par exemple huggingface_hub.logging.DEBUG et huggingface_hub.logging.INFO.

Définit le niveau du journal racine du HuggingFace Hub.

huggingface_hub.utils.logging.set_verbosity_info

< >

( )

Définit le niveau de verbosité sur logging.INFO.

huggingface_hub.utils.logging.set_verbosity_debug

< >

( )

Définit le niveau de verbosité sur logging.DEBUG.

huggingface_hub.utils.logging.set_verbosity_warning

< >

( )

Définit le niveau de verbosité sur logging.WARNING.

huggingface_hub.utils.logging.set_verbosity_error

< >

( )

Définit le niveau de verbosité sur logging.ERROR.

huggingface_hub.utils.logging.disable_propagation

< >

( )

Désactiver la propagation des journaux de la bibliothèque. Notez que la propagation des journaux est désactivée par défaut.

huggingface_hub.utils.logging.enable_propagation

< >

( )

Activez la propagation des journaux de la bibliothèque. Veuillez désactiver le gestionnaire par défaut du HuggingFace Hub pour éviter la double journalisation si le journal racine a été configuré.

Méthodes d’assistance spécifiques au dépôt

Les méthodes exposées ci-dessous sont pertinentes lors de la modification des modules de la bibliothèque huggingface_hub elle-même. L’utilisation de celles-ci ne devrait pas être nécessaire si vous utilisez huggingface_hub et que vous ne les modifiez pas.

huggingface_hub.utils.logging.get_logger

< >

( name: str | None = None )

Paramètres

  • name (str, facultatif) — Le nom du journal à récupérer, généralement le nom du fichier

Retourne un journal avec le nom spécifié. Cette fonction n'est pas censée être accédée directement par les utilisateurs de la bibliothèque.

Exemple :

>>> from huggingface_hub import logging

>>> logger = logging.get_logger(__name__)
>>> logging.set_verbosity_info()

Configurer les barres de progression

Les barres de progression sont un outil utile pour afficher des informations à l'utilisateur pendant l'exécution d'une tâche longue (par exemple lors du téléchargement ou de l'envoi de fichiers). huggingface_hub expose un wrapper tqdm pour afficher les barres de progression de manière cohérente dans toute la bibliothèque.

Par défaut, les barres de progression sont activées. Vous pouvez les désactiver globalement en définissant la variable d’environnement HF_HUB_DISABLE_PROGRESS_BARS. Vous pouvez également les activer/désactiver à l’aide de enable_progress_bars() et disable_progress_bars. Si elle est définie, la variable d’environnement a la priorité sur les fonctions d’aide.

>>> from huggingface_hub import snapshot_download
>>> from huggingface_hub.utils import are_progress_bars_disabled, disable_progress_bars, enable_progress_bars

>>> # Disable progress bars globally
>>> disable_progress_bars()

>>> # Progress bar will not be shown !
>>> snapshot_download("gpt2")

>>> are_progress_bars_disabled()
True

>>> # Re-enable progress bars globally
>>> enable_progress_bars()

Contrôle spécifique par groupe des barres de progression

Vous pouvez également activer ou désactiver les barres de progression pour des groupes spécifiques. Cela vous permet de gérer la visibilité des barres de progression de manière plus granulaire au sein des différentes parties de votre application ou de votre bibliothèque. Lorsqu'une barre de progression est désactivée pour un groupe, tous les sous-groupes qui lui sont rattachés sont également affectés, sauf s'ils sont explicitement remplacés.

# Disable progress bars for a specific group
>>> disable_progress_bars("peft.foo")
>>> assert not are_progress_bars_disabled("peft")
>>> assert not are_progress_bars_disabled("peft.something")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert are_progress_bars_disabled("peft.foo.bar")

# Re-enable progress bars for a subgroup
>>> enable_progress_bars("peft.foo.bar")
>>> assert are_progress_bars_disabled("peft.foo")
>>> assert not are_progress_bars_disabled("peft.foo.bar")

# Use groups with tqdm
# No progress bar for `name="peft.foo"`
>>> for _ in tqdm(range(5), name="peft.foo"):
...     pass

# Progress bar will be shown for `name="peft.foo.bar"`
>>> for _ in tqdm(range(5), name="peft.foo.bar"):
...     pass
100%|███████████████████████████████████████| 5/5 [00:00<00:00, 117817.53it/s]

are_progress_bars_disabled

huggingface_hub.utils.are_progress_bars_disabled

< >

( name: str | None = None ) → bool

Paramètres

  • name (str, facultatif) — Le nom du groupe à vérifier ; si None, vérifie le paramètre global.

Retourne

bool

Vrai si les barres de progression sont désactivées, Faux sinon.

Vérifiez si les barres de progression sont désactivées globalement ou pour un groupe spécifique.

Cette fonction renvoie si les barres de progression sont désactivées pour un groupe donné ou de manière globale. Elle vérifie d'abord la variable d'environnement HF_HUB_DISABLE_PROGRESS_BARS, puis les paramètres programmés.

disable_progress_bars

classe huggingface_hub.utils.disable_progress_bars

< >

( name: str | None = None )

Paramètres

  • name (str, facultatif) — Le nom du groupe pour lequel désactiver les barres de progression. Si None, les barres de progression sont désactivées globalement.

Lève

Warning

  • Warning — Si la variable d'environnement empêche les modifications.

Désactivez les barres de progression, soit globalement, soit pour un groupe spécifié.

Cette fonction met à jour l’état des barres de progression en fonction d’un nom de groupe. Si aucun nom de groupe n’est fourni, toutes les barres de progression sont désactivées. L’opération respecte le paramètre de la variable d’environnement HF_HUB_DISABLE_PROGRESS_BARS.

Fonctionne à la fois comme un appel classique et comme un gestionnaire de contexte : disable_progress_bars() # désactive jusqu'à enable_progress_bars() with disable_progress_bars(): # désactive pour le bloc, réactive à la sortie …

enable_progress_bars

huggingface_hub.utils.enable_progress_bars

< >

( name: str | None = None )

Paramètres

  • name (str, facultatif) — Le nom du groupe pour lequel activer les barres de progression. Si None, les barres de progression sont activées globalement.

Lève

Warning

  • Warning — Si la variable d'environnement empêche les modifications.

Activez les barres de progression, soit globalement, soit pour un groupe spécifié.

Cette fonction active les barres de progression pour le groupe spécifié ou de manière globale si aucun groupe n’est spécifié. L’opération est soumise au paramètre d’environnement HF_HUB_DISABLE_PROGRESS_BARS.

Configurer le backend HTTP

Dans huggingface_hub v0.x, les requêtes HTTP étaient gérées avec requests, et la configuration était effectuée via configure_http_backend. Comme nous utilisons désormais httpx2, la configuration fonctionne différemment : vous devez fournir une fonction fabrique qui ne prend aucun argument et qui renvoie un httpx2.Client. Vous pouvez consulter la mise en œuvre par défaut ici pour voir quels paramètres sont utilisés par défaut.

Dans certaines configurations, vous pouvez avoir besoin de contrôler la manière dont les requêtes HTTP sont effectuées, par exemple lorsque vous travaillez derrière un proxy. La bibliothèque huggingface_hub vous permet de configurer cela globalement avec set_client_factory(). Après la configuration, toutes les requêtes vers le Hub utiliseront vos paramètres personnalisés. Étant donné que huggingface_hub s'appuie sur httpx2.Client en interne, vous pouvez consulter la documentation de httpx2 pour plus de détails sur les paramètres disponibles.

Si vous développez une bibliothèque tierce et devez effectuer des requêtes directes vers le Hub, utilisez get_session() pour obtenir un client httpx2 correctement configuré. Remplacez tout appel direct httpx2.get(...) par get_session().get(...) pour garantir un comportement approprié.

huggingface_hub.set_client_factory

< >

( client_factory: Callable )

Définissez la fabrique de client HTTP à utiliser par huggingface_hub.

La fabrique de client est une méthode qui renvoie un objet httpx2.Client. Lors du premier appel à get_session(), la fabrique de client est utilisée pour créer un nouvel objet httpx2.Client qui sera partagé entre tous les appels effectués par huggingface_hub.

Cela peut s’avérer utile si vous exécutez vos scripts dans un environnement spécifique nécessitant une configuration personnalisée (par exemple, un proxy ou des certificats personnalisés).

Utilisez get_session() pour obtenir un httpx2.Client correctement configuré.

huggingface_hub.get_session

< >

( )

Obtenez un objet httpx2.Client en utilisant la fabrique de transport de l'utilisateur.

Ce client est partagé entre tous les appels effectués par huggingface_hub. Vous ne devez donc pas le fermer manuellement.

Utilisez set_client_factory() pour personnaliser le httpx2.Client.

Dans de rares cas, vous pouvez vouloir fermer manuellement la session en cours (par exemple, après une erreur SSLError transitoire). Vous pouvez le faire avec close_session(). Une nouvelle session sera automatiquement créée lors de l'appel suivant à get_session().

Les sessions sont toujours fermées automatiquement lorsque le processus se termine.

huggingface_hub.close_session

< >

( )

Fermer le httpx2.Client global utilisé par huggingface_hub.

Si un Client est fermé, il sera recréé lors de l'appel suivant à get_session().

Peut s'avérer utile si, par exemple, un certificat SSL a été mis à jour.

Pour le code asynchrone, utilisez set_async_client_factory() pour configurer un httpx2.AsyncClient et get_async_session() pour en récupérer un.

huggingface_hub.set_async_client_factory

< >

( async_client_factory: Callable )

Définissez la fabrique de client HTTP asynchrone à utiliser par huggingface_hub.

La fabrique de client asynchrone est une méthode qui renvoie un objet httpx2.AsyncClient. Cela peut être utile si vous exécutez vos scripts dans un environnement spécifique nécessitant une configuration personnalisée (par exemple, un proxy ou des certificats personnalisés). Utilisez get_async_session() pour obtenir un httpx2.AsyncClient correctement configuré.

Contrairement au httpx2.Client qui est partagé entre tous les appels effectués par huggingface_hub, le httpx2.AsyncClient ne l’est pas. Il est recommandé d’utiliser un gestionnaire de contexte asynchrone pour s’assurer que le client est correctement fermé lorsque le contexte est quitté.

huggingface_hub.get_async_session

< >

( )

Retourner un objet httpx2.AsyncClient en utilisant la fabrique de transport de l'utilisateur.

Utilisez set_async_client_factory() pour personnaliser le httpx2.AsyncClient.

Contrairement au httpx2.Client qui est partagé entre tous les appels effectués par huggingface_hub, le httpx2.AsyncClient ne l’est pas. Il est recommandé d’utiliser un gestionnaire de contexte asynchrone pour s’assurer que le client est correctement fermé lorsque le contexte est quitté.

Contrairement au client synchrone, le cycle de vie du client asynchrone n'est pas géré automatiquement. Utilisez un gestionnaire de contexte asynchrone pour le gérer correctement.

Le module httpx

huggingface_hub réexporte la bibliothèque HTTP qu’il utilise en interne sous le nom huggingface_hub.utils.httpx :

from huggingface_hub.utils import httpx

try:
    ...
except httpx.HTTPError:
    ...

Cela est principalement utile pour les bibliothèques tierces construites sur la base de huggingface_hub. huggingface_hub v1.x est construit sur httpx, tandis que la v2.x est construite sur httpx2 (son successeur, distribué en tant que package distinct). Importer le module depuis huggingface_hub.utils plutôt que d’importer httpx directement signifie que vous obtenez toujours la version réellement utilisée par huggingface_hub, et votre bibliothèque reste compatible avec les deux versions majeures. Consultez ce ticket pour plus de détails sur le plan de migration.

N'utilisez ceci que si vous avez besoin des types ou des exceptions de httpx (par exemple pour intercepter les erreurs). Pour effectuer des requêtes vers le Hub, utilisez get_session() comme décrit ci-dessus.

Gérer les erreurs HTTP

huggingface_hub définit ses propres erreurs HTTP afin d’enrichir l’exception HTTPError levée par httpx2 avec des informations supplémentaires renvoyées par le serveur.

Lever pour le statut

hf_raise_for_status() est censée être la méthode centrale pour « lever une erreur de statut » à partir de toute requête effectuée vers le Hub. Elle encapsule la méthode de base httpx2.Response.raise_for_status afin de fournir des informations supplémentaires. Toute exception HTTPError levée est convertie en HfHubHTTPError.

from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError

response = get_session().post(...)
try:
    hf_raise_for_status(response)
except HfHubHTTPError as e:
    print(str(e)) # formatted message
    e.request_id, e.server_message # details returned by server

    # Complete the error message with additional information once it's raised
    e.append_to_message("\n`create_commit` expects the repository to exist.")
    raise

huggingface_hub.hf_raise_for_status

< >

( response: Responseendpoint_name: str | None = None )

Paramètres

  • response (Response) — Réponse du serveur.
  • endpoint_name (str, facultatif) — Nom de l’endpoint appelé. S’il est fourni, le message d’erreur sera plus complet.

Version interne de response.raise_for_status() qui affinera une éventuelle HTTPError. L'exception levée sera une instance de HfHubHTTPError.

Cet utilitaire est conçu pour être la méthode unique pour raise_for_status lors de l’appel au Hugging Face Hub.

Lève une exception si la requête a échoué :

  • RepositoryNotFoundError Si le dépôt à partir duquel le téléchargement doit être effectué ne peut pas être trouvé. Cela peut être dû au fait qu’il n’existe pas, que repo_type n’est pas défini correctement, ou que le dépôt est private et que vous n’y avez pas accès.
  • GatedRepoError Si le dépôt existe mais est protégé et que l’utilisateur ne figure pas sur la liste des utilisateurs autorisés.
  • RevisionNotFoundError Si le dépôt existe mais que la révision n’a pas pu être trouvée.
  • EntryNotFoundError Si le dépôt existe mais que l’entrée (par exemple le fichier demandé) n’a pas pu être trouvée.
  • BadRequestError Si la requête a échoué avec une erreur HTTP 400 BadRequest.
  • HfHubHTTPError Si la requête a échoué pour une raison non listée ci-dessus.

Vérifier le mode hors ligne

Vous pouvez vérifier de manière programmatique si le mode hors ligne est activé à l’aide de is_offline_mode. Le mode hors ligne est activé en définissant HF_HUB_OFFLINE=1 comme variable d’environnement.

huggingface_hub.is_offline_mode

< >

( )

Indique si nous sommes en mode hors ligne pour le Hub.

Lorsque le mode hors ligne est activé, toutes les requêtes HTTP effectuées avec get_session lèvent une exception OfflineModeIsEnabled.

Exemple :

from huggingface_hub import is_offline_mode

def list_files(repo_id: str):
    if is_offline_mode():
        ... # list files from local cache (degraded experience but still functional)
    else:
        ... # list files from Hub (complete experience)

Erreurs HTTP

Voici une liste des erreurs HTTP levées dans huggingface_hub.

HfHubHTTPError

HfHubHTTPError est la classe parente de toute erreur HTTP du HF Hub. Elle se charge d’analyser la réponse du serveur et de formuler le message d’erreur afin de fournir au maximum d’informations à l’utilisateur.

classe huggingface_hub.errors.HfHubHTTPError

< >

( message: strresponse: Responseserver_message: str | None = None )

HTTPError à hériter pour toute erreur HTTP personnalisée levée dans HF Hub.

Any HTTPError is converted at least into a HfHubHTTPError. If some information is sent back by the server, it will be added to the error message.

Détails ajoutés :

  • L’identifiant de requête est extrait des en-têtes dans l’ordre de priorité suivant : “X-Request-Id”, “X-Amzn-Trace-Id”, “X-Amz-Cf-Id”.
  • Message d'erreur du serveur issu de l'en-tête « X-Error-Message ».
  • Message d'erreur du serveur si nous en trouvons un dans le corps de la réponse.

Exemple :

    import httpx2
    from huggingface_hub.utils import get_session, hf_raise_for_status, HfHubHTTPError

    response = get_session().post(...)
    try:
        hf_raise_for_status(response)
    except HfHubHTTPError as e:
        print(str(e)) # formatted message
        e.request_id, e.server_message # details returned by server

        # Complete the error message with additional information once it's raised
        e.append_to_message("
ate_commit` expects the repository to exist.")
        raise

append_to_message

< >

( additional_message: str )

Ajoute des informations supplémentaires au message initial de HfHubHTTPError.

RepositoryNotFoundError

classe huggingface_hub.errors.RepositoryNotFoundError

< >

( message: strresponse: Responseserver_message: str | None = None )

Paramètres

  • repo_id (str ou None) — L’identifiant du dépôt introuvable, s’il a pu être déterminé à partir de l’URL de la requête.
  • repo_type (str ou None) — Le type de dépôt (« model », « dataset » ou « space »), s’il a pu être déterminé à partir de l’URL de la requête.

Lévé lors de la tentative d'accès à une URL hf.co avec un nom de dépôt invalide, ou avec le nom d'un dépôt privé auquel l'utilisateur n'a pas accès.

Exemple :

>>> from huggingface_hub import model_info
>>> model_info("<non_existent_repository>")
(...)
huggingface_hub.errors.RepositoryNotFoundError: 401 Client Error. (Request ID: PvMw_VjBMjVdMz53WKIzP)

Repository Not Found for url: https://huggingface.co/api/models/%3Cnon_existent_repository%3E.
Please make sure you specified the correct `repo_id` and `repo_type`.
If the repo is private, make sure you are authenticated and your token has the required permissions.
Invalid username or password.

GatedRepoError

classe huggingface_hub.errors.GatedRepoError

< >

( message: strresponse: Responseserver_message: str | None = None )

Lévé lors de la tentative d'accès à un dépôt protégé pour lequel l'utilisateur ne figure pas sur la liste des personnes autorisées.

Note : dérive de RepositoryNotFoundError pour garantir la rétrocompatibilité.

Exemple :

>>> from huggingface_hub import model_info
>>> model_info("<gated_repository>")
(...)
huggingface_hub.errors.GatedRepoError: 403 Client Error. (Request ID: ViT1Bf7O_026LGSQuVqfa)

Cannot access gated repo for url https://huggingface.co/api/models/ardent-figment/gated-model.
Access to model ardent-figment/gated-model is restricted and you are not in the authorized list.
Visit https://huggingface.co/ardent-figment/gated-model to ask for access.

RevisionNotFoundError

classe huggingface_hub.errors.RevisionNotFoundError

< >

( message: strresponse: Responseserver_message: str | None = None )

Paramètres

  • repo_id (str ou None) — L'identifiant du dépôt, s'il a pu être déterminé à partir de l'URL de la requête.
  • repo_type (str ou None) — Le type de dépôt (« model », « dataset » ou « space »), s’il a pu être déterminé à partir de l’URL de la requête.

Lévé lors de la tentative d'accès à une URL hf.co avec un dépôt valide mais une révision invalide.

Exemple :

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', 'config.json', revision='<non-existent-revision>')
(...)
huggingface_hub.errors.RevisionNotFoundError: 404 Client Error. (Request ID: Mwhe_c3Kt650GcdKEFomX)

Revision Not Found for url: https://huggingface.co/bert-base-cased/resolve/%3Cnon-existent-revision%3E/config.json.

RevisionResolutionError

classe huggingface_hub.errors.RevisionResolutionError

< >

( )

Lévé par HfApi.resolve_revision() lorsqu'une révision ne peut pas être résolue en hachage de commit : le Hub n'a pas pu être atteint (mode hors ligne, erreur de connexion, délai d'attente, indisponibilité du Hub, …) et aucune entrée correspondante n'a été trouvée dans le cache local.

BadRequestError

classe huggingface_hub.errors.BadRequestError

< >

( message: strresponse: Responseserver_message: str | None = None )

Lévé par hf_raise_for_status lorsque le serveur renvoie une erreur HTTP 400.

Exemple :

>>> resp = httpx2.post("hf.co/api/check", ...)
>>> hf_raise_for_status(resp, endpoint_name="check")
huggingface_hub.errors.BadRequestError: Bad request for check endpoint: {details} (Request ID: XXX)

EntryNotFoundError

classe huggingface_hub.errors.EntryNotFoundError

< >

( )

Lévé lorsque l'entrée n'est pas trouvée, que ce soit localement ou à distance.

Exemple :

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.RemoteEntryNotFoundError (...)
>>> hf_hub_download('bert-base-cased', '<non-existent-file>', local_files_only=True)
(...)
huggingface_hub.utils.errors.LocalEntryNotFoundError (...)

RemoteEntryNotFoundError

classe huggingface_hub.errors.RemoteEntryNotFoundError

< >

( message: strresponse: Responseserver_message: str | None = None )

Paramètres

  • repo_id (str ou None) — L'identifiant du dépôt, s'il a pu être déterminé à partir de l'URL de la requête.
  • repo_type (str ou None) — Le type de dépôt (« model », « dataset » ou « space »), s’il a pu être déterminé à partir de l’URL de la requête.

Lévé lors de la tentative d'accès à une URL hf.co avec un dépôt et une révision valides, mais un nom de fichier invalide.

Exemple :

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-existent-file>')
(...)
huggingface_hub.errors.EntryNotFoundError: 404 Client Error. (Request ID: 53pNl6M0MxsnG5Sw8JA6x)

Entry Not Found for url: https://huggingface.co/bert-base-cased/resolve/main/%3Cnon-existent-file%3E.

LocalEntryNotFoundError

classe huggingface_hub.errors.LocalEntryNotFoundError

< >

( message: str )

Lévé lors de la tentative d'accès à un fichier ou à un instantané qui n'est pas présent sur le disque lorsque le réseau est désactivé ou indisponible (problème de connexion). L'entrée peut exister sur le Hub.

Exemple :

>>> from huggingface_hub import hf_hub_download
>>> hf_hub_download('bert-base-cased', '<non-cached-file>',  local_files_only=True)
(...)
huggingface_hub.errors.LocalEntryNotFoundError: Cannot find the requested files in the disk cache and outgoing traffic has been disabled. To enable hf.co look-ups and downloads online, set 'local_files_only' to False.

IncompleteSnapshotError

classe huggingface_hub.errors.IncompleteSnapshotError

< >

( message: strsnapshot_path: str )

Lévé par snapshot_download() lorsque le Hub est inaccessible (hors ligne, problème de connexion ou local_files_only=True) et que le snapshot en cache est connu pour être incomplet : certains fichiers répertoriés dans l’arborescence en cache du dépôt sont absents du snapshot local.

Ceci est une sous-classe de LocalEntryNotFoundError pour la compatibilité ascendante.

L'attribut snapshot_path contient le chemin vers le snapshot local incomplet, permettant ainsi à une bibliothèque en aval de localiser les fichiers mis en cache les plus récents, même s'ils sont connus pour être incomplets.

CachedRepoTreeNotFoundError

classe huggingface_hub.errors.CachedRepoTreeNotFoundError

< >

( )

Lévé par get_cached_repo_tree() lorsqu'aucune liste d'arborescence n'est mise en cache pour la révision demandée.

L'arborescence est remplie en tant qu'effet secondaire de snapshot_download().

OfflineModeIsEnabled

classe huggingface_hub.errors.OfflineModeIsEnabled

< >

( )

Lévé lorsqu'une requête est effectuée mais que la variable d'environnement HF_HUB_OFFLINE=1 est définie.

Télémétrie

huggingface_hub inclut un utilitaire pour envoyer des données de télémétrie. Ces informations nous aident à déboguer les problèmes et à prioriser les nouvelles fonctionnalités. Les utilisateurs peuvent désactiver la collecte de télémétrie à tout moment en définissant la variable d’environnement HF_HUB_DISABLE_TELEMETRY=1. La télémétrie est également désactivée en mode hors ligne (c’est-à-dire lorsque HF_HUB_OFFLINE=1 est défini).

Si vous êtes mainteneur d’une bibliothèque tierce, l’envoi de données de télémétrie se résume à un simple appel à send_telemetry. Les données sont envoyées dans un thread séparé afin de réduire au maximum l’impact pour les utilisateurs.

huggingface_hub.utils.send_telemetry

< >

( topic: strlibrary_name: str | None = Nonelibrary_version: str | None = Noneuser_agent: dict | str | None = None )

Paramètres

  • topic (str) — Nom du sujet surveillé. Le sujet est utilisé directement pour construire l’URL. Pour surveiller des sous-sujets, utilisez simplement la séparation par « / ». Exemples : « gradio », « transformers/examples »,…
  • library_name (str, facultatif) — Le nom de la bibliothèque qui effectue la requête HTTP. Sera ajouté à l’en-tête user-agent.
  • library_version (str, facultatif) — La version de la bibliothèque qui effectue la requête HTTP. Sera ajoutée à l’en-tête user-agent.
  • user_agent (str, dict, facultatif) — Les informations de l’agent utilisateur, sous forme de dictionnaire ou de chaîne de caractères unique. Elles seront complétées par des informations sur les paquets installés.

Envoie des données de télémétrie qui aident à suivre l'utilisation des différentes bibliothèques HF.

Ces données d’utilisation nous aident à déboguer les problèmes et à prioriser les nouvelles fonctionnalités. Toutefois, nous comprenons que tout le monde ne souhaite pas partager d’informations supplémentaires et nous respectons votre vie privée. Vous pouvez désactiver la collecte de télémétrie en définissant HF_HUB_DISABLE_TELEMETRY=1 en tant que variable d’environnement. La télémétrie est également désactivée en mode hors ligne (c’est-à-dire lorsque HF_HUB_OFFLINE=1 est défini).

La collecte de télémétrie est exécutée dans un thread séparé afin de minimiser l'impact pour l'utilisateur.

Exemple :

>>> from huggingface_hub.utils import send_telemetry

# Send telemetry without library information
>>> send_telemetry("ping")

# Send telemetry to subtopic with library information
>>> send_telemetry("gradio/local_link", library_name="gradio", library_version="3.22.1")

# Send telemetry with additional data
>>> send_telemetry(
...     topic="examples",
...     library_name="transformers",
...     library_version="4.26.0",
...     user_agent={"pipeline": "text_classification", "framework": "flax"},
... )

Validateurs

huggingface_hub inclut des validateurs personnalisés pour valider automatiquement les arguments des méthodes. La validation s’inspire du travail réalisé dans Pydantic pour valider les annotations de types, mais avec des fonctionnalités plus limitées.

Décorateur générique

validate_hf_hub_args() est un décorateur générique destiné à encapsuler les méthodes dont les arguments suivent la convention de nommage de huggingface_hub. Par défaut, tous les arguments pour lesquels un validateur est implémenté sont validés.

Si une entrée n'est pas valide, une HFValidationError est levée. Seule la première valeur non valide déclenche une erreur et interrompt le processus de validation.

Utilisation :

>>> from huggingface_hub.utils import validate_hf_hub_args

>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
...     print(repo_id)

>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id

>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

validate_hf_hub_args

huggingface_hub.utils.validate_hf_hub_args

< >

( fn: ~CallableT )

Valider les valeurs reçues en argument pour toute méthode publique de huggingface_hub.

L'objectif de ce décorateur est d'harmoniser la validation des arguments réutilisés partout. Par défaut, tous les validateurs définis sont testés.

Validateurs :

  • validate_repo_id() : repo_id doit être "repo_name" ou "namespace/repo_name". L'espace de noms est un nom d'utilisateur ou une organisation.
  • ~utils.smoothly_deprecate_legacy_arguments : Ignorer proxies lors du téléchargement de fichiers (devrait être défini globalement).

Exemple :

>>> from huggingface_hub.utils import validate_hf_hub_args

>>> @validate_hf_hub_args
... def my_cool_method(repo_id: str):
...     print(repo_id)

>>> my_cool_method(repo_id="valid_repo_id")
valid_repo_id

>>> my_cool_method("other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

>>> my_cool_method(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

HFValidationError

classe huggingface_hub.errors.HFValidationError

< >

( )

Exception générique levée par les validateurs de huggingface_hub.

Hérite de ValueError.

Validateurs d'arguments

Les validateurs peuvent également être utilisés individuellement. Voici la liste de tous les arguments qui peuvent être validés.

repo_id

huggingface_hub.utils.validate_repo_id

< >

( repo_id: str | None )

Valider que repo_id est valide.

Ceci ne vise pas à remplacer la validation appropriée effectuée sur le Hub, mais plutôt à éviter les incohérences locales dans la mesure du possible (exemple : passer repo_type dans repo_id est interdit).

Règles :

  • Entre 1 et 96 caractères.
  • Soit « repo_name », soit « namespace/repo_name »
  • [a-zA-Z0-9] ou ”-”, ”_”, ”.”
  • « — » et « .. » sont interdits

Valide : "foo", "foo/bar", "123", "Foo-BAR_foo.bar123"

Non valide : "datasets/foo/bar", ".repo_id", "foo--bar", "foo.git"

Exemple :

>>> from huggingface_hub.utils import validate_repo_id
>>> validate_repo_id(repo_id="valid_repo_id")
>>> validate_repo_id(repo_id="other..repo..id")
huggingface_hub.utils._validators.HFValidationError: Cannot have -- or .. in repo_id: 'other..repo..id'.

Discuté dans https://github.com/huggingface/huggingface_hub/issues/1008. Dans moon-landing (dépôt interne) :

smoothly_deprecate_legacy_arguments

Pas tout à fait un validateur, mais qui s'est exécuté également.

huggingface_hub.utils._validators.smoothly_deprecate_legacy_arguments

< >

( fn_name: strkwargs: dict )

Déprécier en douceur les arguments obsolètes dans la base de code huggingface_hub.

Cette fonction ignore certains arguments obsolètes présents dans les kwargs et avertit l'utilisateur qu'ils sont ignorés. L'objectif est d'éviter de casser le code existant tout en guidant l'utilisateur vers la nouvelle méthode.

Liste des arguments obsolètes :

  • proxies : Pour configurer les proxys, l’utilisateur doit soit utiliser la variable d’environnement HTTP_PROXY, soit configurer manuellement le httpx2.Client à l’aide de la fonction set_client_factory().

    Dans huggingface_hub 0.x, proxies était un dictionnaire transmis directement à requests.request. Depuis huggingface_hub 1.x, les proxies par requête ne sont plus prises en charge. En particulier, il n'est plus possible de configurer les proxys au niveau de chaque requête. La solution consiste à le configurer globalement à l'aide de la fonction set_client_factory() ou en utilisant la variable d'environnement HTTP_PROXY.

    Pour plus de détails, voir :

  • resume_download : obsolète sans remplacement. huggingface_hub reprend toujours les téléchargements lorsque c'est possible.

  • force_filename : obsolète sans remplacement. Le nom de fichier est toujours identique à celui du Hub.

  • local_dir_use_symlinks : obsolète sans remplacement. Le téléchargement vers un répertoire local n'utilise plus de liens symboliques.

Update on GitHub