Hub Python Library documentation

Utilidades

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilidades

Configurar el registro

El paquete huggingface_hub expone una utilidad de logging para controlar el nivel de registro del propio paquete. Puedes importarlo de la siguiente manera:

from huggingface_hub import logging

A continuación, puede definir la verbosidad para actualizar la cantidad de registros que verá:

from huggingface_hub import logging

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

logging.set_verbosity(...)

Los niveles deben entenderse de la siguiente manera:

  • error: solo muestra registros críticos sobre el uso que pueden provocar un error o un comportamiento inesperado.
  • warning: muestra registros que no son críticos, pero cuyo uso puede provocar un comportamiento no deseado. Además, es posible que se muestren registros informativos importantes.
  • info: muestra la mayoría de los registros, incluido algún registro detallado sobre lo que ocurre internamente. Si algo se comporta de manera inesperada, recomendamos cambiar el nivel de verbosidad a este para obtener más información.
  • debug: muestra todos los registros, incluidos algunos registros internos que pueden usarse para rastrear exactamente lo que ocurre por debajo de las capas.

huggingface_hub.utils.logging.get_verbosity

< >

( )

Devuelve el nivel actual del registrador raíz de HuggingFace Hub.

HuggingFace Hub tiene los siguientes niveles de registro:

  • 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 )

Parámetros

  • verbosity (int) — Nivel de registro, por ejemplo, huggingface_hub.logging.DEBUG y huggingface_hub.logging.INFO.

Establece el nivel del registrador raíz de HuggingFace Hub.

huggingface_hub.utils.logging.set_verbosity_info

< >

( )

Establece la verbosidad en logging.INFO.

huggingface_hub.utils.logging.set_verbosity_debug

< >

( )

Establece la verbosidad en logging.DEBUG.

huggingface_hub.utils.logging.set_verbosity_warning

< >

( )

Establece la verbosidad en logging.WARNING.

huggingface_hub.utils.logging.set_verbosity_error

< >

( )

Establece la verbosidad en logging.ERROR.

huggingface_hub.utils.logging.disable_propagation

< >

( )

Desactive la propagación de las salidas de registro de la biblioteca. Tenga en cuenta que la propagación de registros está desactivada de forma predeterminada.

huggingface_hub.utils.logging.enable_propagation

< >

( )

Habilite la propagación de las salidas de registro de la biblioteca. Desactive el controlador predeterminado de HuggingFace Hub para evitar el registro duplicado si el registro raíz se ha configurado.

Métodos auxiliares específicos del repositorio

Los métodos expuestos a continuación son relevantes al modificar módulos de la propia biblioteca huggingface_hub. No debería ser necesario usarlos si utilizas huggingface_hub y no los modificas.

huggingface_hub.utils.logging.get_logger

< >

( name: str | None = None )

Parámetros

  • name (str, opcional) — El nombre del registrador a obtener, normalmente el nombre del archivo

Devuelve un registrador con el nombre especificado. Esta función no está destinada a ser accedida directamente por los usuarios de la biblioteca.

Ejemplo:

>>> from huggingface_hub import logging

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

Configurar las barras de progreso

Las barras de progreso son una herramienta útil para mostrar información al usuario mientras se ejecuta una tarea de larga duración (p. ej., al descargar o subir archivos). huggingface_hub expone un envoltorio de tqdm para mostrar barras de progreso de manera coherente en toda la biblioteca.

Por defecto, las barras de progreso están habilitadas. Puede desactivarlas de forma global configurando la variable de entorno HF_HUB_DISABLE_PROGRESS_BARS. También puede activarlas o desactivarlas mediante enable_progress_bars() y disable_progress_bars. Si se configura, la variable de entorno tiene prioridad sobre los helpers.

>>> 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()

Control específico de grupo de las barras de progreso

También puede habilitar o deshabilitar las barras de progreso para grupos específicos. Esto le permite gestionar la visibilidad de las barras de progreso de manera más granular en diferentes partes de su aplicación o biblioteca. Cuando se deshabilita una barra de progreso para un grupo, todos los subgrupos bajo él también se ven afectados, a menos que se anule explícitamente.

# 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

Parámetros

  • name (str, opcional) — El nombre del grupo a verificar; si es None, verifica la configuración global.

Devuelve

bool

True si las barras de progreso están deshabilitadas, False en caso contrario.

Comprueba si las barras de progreso están deshabilitadas globalmente o para un grupo específico.

Esta función devuelve si las barras de progreso están desactivadas para un grupo dado o de forma global. Primero comprueba la variable de entorno HF_HUB_DISABLE_PROGRESS_BARS y luego las configuraciones programáticas.

disable_progress_bars

clase huggingface_hub.utils.disable_progress_bars

< >

( name: str | None = None )

Parámetros

  • name (str, opcional) — El nombre del grupo para el que se desactivarán las barras de progreso. Si es None, las barras de progreso se desactivan globalmente.

Lanza

Warning

  • Warning — Si la variable de entorno impide los cambios.

Desactiva las barras de progreso de forma global o para un grupo especificado.

Esta función actualiza el estado de las barras de progreso en función de un nombre de grupo. Si no se proporciona un nombre de grupo, se desactivan todas las barras de progreso. La operación respeta la configuración de la variable de entorno HF_HUB_DISABLE_PROGRESS_BARS.

Funciona tanto como una llamada regular como como un gestor de contexto: disable_progress_bars() # desactiva hasta enable_progress_bars() with disable_progress_bars(): # desactiva para el bloque, reactiva al salir …

enable_progress_bars

huggingface_hub.utils.enable_progress_bars

< >

( name: str | None = None )

Parámetros

  • name (str, opcional) — El nombre del grupo para el que se habilitarán las barras de progreso. Si es None, las barras de progreso se habilitan globalmente.

Lanza

Warning

  • Warning — Si la variable de entorno impide los cambios.

Habilite las barras de progreso de forma global o para un grupo especificado.

Esta función habilita las barras de progreso para el grupo especificado o de forma global si no se especifica ningún grupo. La operación está sujeta a la configuración de entorno HF_HUB_DISABLE_PROGRESS_BARS.

Configuración del backend HTTP

En huggingface_hub v0.x, las solicitudes HTTP se manejaban con requests y la configuración se hacía mediante configure_http_backend. Dado que ahora usamos httpx2, la configuración funciona de manera diferente: debes proporcionar una función de fábrica que no tome argumentos y devuelva un httpx2.Client. Puedes revisar la implementación predeterminada aquí para ver qué parámetros se usan de forma predeterminada.

En algunas configuraciones, es posible que necesites controlar cómo se realizan las solicitudes HTTP, por ejemplo, al trabajar detrás de un proxy. La biblioteca huggingface_hub te permite configurar esto de forma global con set_client_factory(). Después de la configuración, todas las solicitudes al Hub utilizarán tus ajustes personalizados. Dado que huggingface_hub se basa en httpx2.Client internamente, puedes consultar la documentación de httpx2 para obtener detalles sobre los parámetros disponibles.

Si estás desarrollando una biblioteca de terceros y necesitas realizar solicitudes directas al Hub, usa get_session() para obtener un cliente httpx2 correctamente configurado. Reemplaza cualquier llamada directa a httpx2.get(...) con get_session().get(...) para garantizar un comportamiento adecuado.

huggingface_hub.set_client_factory

< >

( client_factory: Callable )

Establezca la fábrica de clientes HTTP que usará huggingface_hub.

La fábrica de clientes es un método que devuelve un objeto httpx2.Client. En la primera llamada a get_session(), la fábrica de clientes se utilizará para crear un nuevo objeto httpx2.Client que se compartirá entre todas las llamadas realizadas por huggingface_hub.

Esto puede ser útil si ejecutas tus scripts en un entorno específico que requiere una configuración personalizada (p. ej., un proxy o certificados personalizados).

Use get_session() para obtener un httpx2.Client correctamente configurado.

huggingface_hub.get_session

< >

( )

Obtenga un objeto httpx2.Client utilizando la fábrica de transporte del usuario.

Este cliente se comparte entre todas las llamadas realizadas por huggingface_hub. Por lo tanto, no debe cerrarse manualmente.

Use set_client_factory() para personalizar el httpx2.Client.

En casos raros, es posible que desee cerrar manualmente la sesión actual (por ejemplo, después de un SSLError transitorio). Puede hacer esto con close_session(). Se creará automáticamente una nueva sesión en la siguiente llamada a get_session().

Las sesiones siempre se cierran automáticamente cuando el proceso termina.

huggingface_hub.close_session

< >

( )

Cierra el httpx2.Client global utilizado por huggingface_hub.

Si un Client se cierra, se volverá a crear en la siguiente llamada a get_session().

Puede ser útil, por ejemplo, si se ha actualizado un certificado SSL.

Para código asíncrono, use set_async_client_factory() para configurar un httpx2.AsyncClient y get_async_session() para obtener uno.

huggingface_hub.set_async_client_factory

< >

( async_client_factory: Callable )

Establezca la fábrica de clientes HTTP asíncronos que usará huggingface_hub.

La fábrica de clientes asíncronos es un método que devuelve un objeto httpx2.AsyncClient. Esto puede ser útil si ejecutas tus scripts en un entorno específico que requiera una configuración personalizada (p. ej., un proxy o certificados personalizados). Usa get_async_session() para obtener un httpx2.AsyncClient correctamente configurado.

A diferencia del httpx2.Client, que se comparte entre todas las llamadas realizadas por huggingface_hub, el httpx2.AsyncClient no se comparte. Se recomienda usar un gestor de contexto asíncrono para garantizar que el cliente se cierre correctamente al salir del contexto.

huggingface_hub.get_async_session

< >

( )

Devuelve un objeto httpx2.AsyncClient, utilizando la fábrica de transporte del usuario.

Use set_async_client_factory() para personalizar el httpx2.AsyncClient.

A diferencia del httpx2.Client, que se comparte entre todas las llamadas realizadas por huggingface_hub, el httpx2.AsyncClient no se comparte. Se recomienda usar un gestor de contexto asíncrono para garantizar que el cliente se cierre correctamente al salir del contexto.

A diferencia del cliente síncrono, el ciclo de vida del cliente asíncrono no se gestiona automáticamente. Utilice un gestor de contexto asíncrono para administrarlo correctamente.

El módulo httpx

huggingface_hub reexporta la biblioteca HTTP que utiliza internamente como huggingface_hub.utils.httpx:

from huggingface_hub.utils import httpx

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

Esto resulta útil principalmente para bibliotecas de terceros construidas sobre huggingface_hub. huggingface_hub v1.x se basa en httpx, mientras que v2.x se basa en httpx2 (su sucesor, distribuido como un paquete independiente). Importar el módulo desde huggingface_hub.utils en lugar de importar httpx directamente significa que siempre obtienes la versión que huggingface_hub utiliza realmente, y tu biblioteca se mantiene compatible con ambas versiones principales. Consulta este problema para obtener más detalles sobre el plan de migración.

Utiliza esto solo si necesitas tipos o excepciones de httpx (p. ej., para capturar errores). Para realizar solicitudes al Hub, usa get_session() como se describió anteriormente.

Gestionar errores HTTP

huggingface_hub define sus propios errores HTTP para refinar el HTTPError lanzado por httpx2 con información adicional enviada por el servidor.

Generar una excepción para el estado

hf_raise_for_status() está diseñado para ser el método central para “raise for status” de cualquier solicitud realizada al Hub. Envuelve el método base httpx2.Response.raise_for_status para proporcionar información adicional. Cualquier HTTPError lanzado se convierte en un 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 )

Parámetros

  • response (Response) — Respuesta del servidor.
  • endpoint_name (str, opcional) — Nombre del endpoint que se ha llamado. Si se proporciona, el mensaje de error será más completo.

Versión interna de response.raise_for_status() que refinará un posible HTTPError. La excepción lanzada será una instancia de HfHubHTTPError.

Este helper está diseñado para ser el método único para raise_for_status al realizar una llamada al Hugging Face Hub.

Se lanza cuando la solicitud ha fallado:

  • RepositoryNotFoundError Si no se puede encontrar el repositorio del que se va a descargar. Esto puede deberse a que no existe, a que repo_type no está configurado correctamente o a que el repositorio es private y no tienes acceso.
  • GatedRepoError Si el repositorio existe pero está restringido y el usuario no está en la lista de autorizados.
  • RevisionNotFoundError Si el repositorio existe pero no se pudo encontrar la revisión.
  • EntryNotFoundError Si el repositorio existe pero no se pudo encontrar la entrada (p. ej., el archivo solicitado).
  • BadRequestError Si la solicitud falló con un error HTTP 400 BadRequest.
  • HfHubHTTPError Si la solicitud falló por un motivo no listado anteriormente.

Comprobar el modo sin conexión

Puede comprobar de forma programática si el modo sin conexión está habilitado mediante is_offline_mode. El modo sin conexión se habilita estableciendo HF_HUB_OFFLINE=1 como variable de entorno.

huggingface_hub.is_offline_mode

< >

( )

Indica si estamos en modo sin conexión para el Hub.

Cuando el modo sin conexión está habilitado, todas las solicitudes HTTP realizadas con get_session lanzarán una excepción OfflineModeIsEnabled.

Ejemplo:

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)

Errores HTTP

Aquí hay una lista de los errores HTTP que se lanzan en huggingface_hub.

HfHubHTTPError

HfHubHTTPError es la clase padre de cualquier error HTTP de HF Hub. Se encarga de analizar la respuesta del servidor y formatear el mensaje de error para proporcionar al usuario la mayor cantidad de información posible.

clase huggingface_hub.errors.HfHubHTTPError

< >

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

HTTPError para heredar en cualquier error HTTP personalizado lanzado en HF Hub.

Cualquier HTTPError se convierte al menos en un HfHubHTTPError. Si el servidor devuelve alguna información, se añadirá al mensaje de error.

Detalles añadidos:

  • El ID de solicitud se obtiene de las cabeceras en el siguiente orden de precedencia: “X-Request-Id”, “X-Amzn-Trace-Id”, “X-Amz-Cf-Id”.
  • Mensaje de error del servidor de la cabecera “X-Error-Message”.
  • Mensaje de error del servidor si se encuentra uno en el cuerpo de la respuesta.

Ejemplo:

    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 )

Añade información adicional al mensaje inicial de HfHubHTTPError.

RepositoryNotFoundError

clase huggingface_hub.errors.RepositoryNotFoundError

< >

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

Parámetros

  • repo_id (str o None) — El identificador del repositorio que no se encontró, si se pudo determinar a partir de la URL de la solicitud.
  • repo_type (str o None) — El tipo de repositorio (“model”, “dataset” o “space”), si se pudo determinar a partir de la URL de la solicitud.

Se lanza al intentar acceder a una URL de hf.co con un nombre de repositorio no válido, o con el nombre de un repositorio privado al que el usuario no tiene acceso.

Ejemplo:

>>> 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

clase huggingface_hub.errors.GatedRepoError

< >

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

Se genera al intentar acceder a un repositorio con acceso restringido para el cual el usuario no está en la lista de autorizados.

Nota: deriva de RepositoryNotFoundError para garantizar la compatibilidad hacia atrás.

Ejemplo:

>>> 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

clase huggingface_hub.errors.RevisionNotFoundError

< >

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

Parámetros

  • repo_id (str o None) — El identificador del repositorio, si se pudo determinar a partir de la URL de la solicitud.
  • repo_type (str o None) — El tipo de repositorio (“model”, “dataset” o “space”), si se pudo determinar a partir de la URL de la solicitud.

Se genera al intentar acceder a una URL de hf.co con un repositorio válido pero una revisión no válida.

Ejemplo:

>>> 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

clase huggingface_hub.errors.RevisionResolutionError

< >

( )

Se genera mediante HfApi.resolve_revision() cuando una revisión no se puede resolver a un hash de commit: no se pudo acceder al Hub (modo sin conexión, error de conexión, tiempo de espera agotado, caída del Hub, …) y no se encontró ninguna entrada coincidente en la caché local.

BadRequestError

clase huggingface_hub.errors.BadRequestError

< >

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

Se genera mediante hf_raise_for_status cuando el servidor devuelve un error HTTP 400.

Ejemplo:

>>> 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

clase huggingface_hub.errors.EntryNotFoundError

< >

( )

Se genera cuando la entrada no se encuentra, ya sea local o remotamente.

Ejemplo:

>>> 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

clase huggingface_hub.errors.RemoteEntryNotFoundError

< >

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

Parámetros

  • repo_id (str o None) — El identificador del repositorio, si se pudo determinar a partir de la URL de la solicitud.
  • repo_type (str o None) — El tipo de repositorio (“model”, “dataset” o “space”), si se pudo determinar a partir de la URL de la solicitud.

Se lanza al intentar acceder a una URL de hf.co con un repositorio y una revisión válidos, pero con un nombre de archivo no válido.

Ejemplo:

>>> 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

clase huggingface_hub.errors.LocalEntryNotFoundError

< >

( message: str )

Se genera al intentar acceder a un archivo o instantánea que no está en el disco cuando la red está deshabilitada o no está disponible (problema de conexión). La entrada puede existir en el Hub.

Ejemplo:

>>> 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

clase huggingface_hub.errors.IncompleteSnapshotError

< >

( message: strsnapshot_path: str )

Se lanza mediante snapshot_download() cuando no se puede acceder al Hub (sin conexión, problema de conexión o local_files_only=True) y se sabe que la instantánea en caché está incompleta: faltan en la instantánea local algunos de los archivos enumerados en el listado de árbol en caché del repositorio.

Esta es una subclase de LocalEntryNotFoundError por compatibilidad con versiones anteriores.

El atributo snapshot_path contiene la ruta de la instantánea local incompleta, de modo que una biblioteca de nivel inferior pueda localizar los archivos más recientes en caché, aunque se sepa que están incompletos.

CachedRepoTreeNotFoundError

clase huggingface_hub.errors.CachedRepoTreeNotFoundError

< >

( )

Se genera mediante get_cached_repo_tree() cuando no hay un listado de árbol en caché para la revisión solicitada.

La lista del árbol se genera como efecto secundario de snapshot_download().

OfflineModeIsEnabled

clase huggingface_hub.errors.OfflineModeIsEnabled

< >

( )

Se produce cuando se realiza una solicitud pero HF_HUB_OFFLINE=1 está establecido como variable de entorno.

Telemetría

huggingface_hub incluye un helper para enviar datos de telemetría. Esta información nos ayuda a depurar problemas y a priorizar nuevas funciones. Los usuarios pueden deshabilitar la recopilación de telemetría en cualquier momento estableciendo la variable de entorno HF_HUB_DISABLE_TELEMETRY=1. La telemetría también se deshabilita en modo sin conexión (es decir, al establecer HF_HUB_OFFLINE=1).

Si eres mantenedor de una biblioteca de terceros, enviar datos de telemetría es tan sencillo como hacer una llamada a send_telemetry. Los datos se envían en un hilo separado para reducir al máximo el impacto para los usuarios.

huggingface_hub.utils.send_telemetry

< >

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

Parámetros

  • topic (str) — Nombre del tema que se monitorea. El tema se utiliza directamente para construir la URL. Si desea monitorea subtemas, simplemente use la separación “/”. Ejemplos: “gradio”, “transformers/examples”,…
  • library_name (str, opcional) — El nombre de la biblioteca que realiza la solicitud HTTP. Se añadirá al encabezado user-agent.
  • library_version (str, opcional) — La versión de la biblioteca que realiza la solicitud HTTP. Se añadirá al encabezado user-agent.
  • user_agent (str, dict, opcional) — La información del agente de usuario en forma de un diccionario o una sola cadena de caracteres. Se completará con información sobre los paquetes instalados.

Envía telemetría que ayuda a rastrear el uso de diferentes bibliotecas de HF.

Estos datos de uso nos ayudan a depurar problemas y a priorizar nuevas funciones. Sin embargo, entendemos que no todo el mundo desea compartir información adicional y respetamos su privacidad. Puede deshabilitar la recopilación de telemetría estableciendo HF_HUB_DISABLE_TELEMETRY=1 como variable de entorno. La telemetría también se deshabilita en modo sin conexión (es decir, al establecer HF_HUB_OFFLINE=1).

La recopilación de telemetría se ejecuta en un hilo separado para minimizar el impacto en el usuario.

Ejemplo:

>>> 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"},
... )

Validadores

huggingface_hub incluye validadores personalizados para validar automáticamente los argumentos de los métodos. La validación se inspira en el trabajo realizado en Pydantic para validar las anotaciones de tipos, pero con funciones más limitadas.

Decorador genérico

validate_hf_hub_args() es un decorador genérico para encapsular métodos que tienen argumentos que siguen la nomenclatura de huggingface_hub. De forma predeterminada, todos los argumentos que tienen un validador implementado se validarán.

Si una entrada no es válida, se lanza un HFValidationError. Solo el primer valor no válido lanza un error y detiene el proceso de validación.

Uso:

>>> 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 )

Valida los valores recibidos como argumento para cualquier método público de huggingface_hub.

El objetivo de este decorador es armonizar la validación de argumentos reutilizados en todas partes. De forma predeterminada, se prueban todos los validadores definidos.

Validadores:

  • validate_repo_id(): repo_id debe ser "repo_name" o "namespace/repo_name". El namespace es un nombre de usuario o una organización.
  • ~utils.smoothly_deprecate_legacy_arguments: Ignorar proxies al descargar archivos (debe configurarse de forma global).

Ejemplo:

>>> 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

clase huggingface_hub.errors.HFValidationError

< >

( )

Excepción genérica lanzada por los validadores de huggingface_hub.

Hereda de ValueError.

Validadores de argumentos

Los validadores también se pueden usar de forma individual. A continuación se muestra una lista de todos los argumentos que se pueden validar.

repo_id

huggingface_hub.utils.validate_repo_id

< >

( repo_id: str | None )

Valida que repo_id sea válido.

Esto no pretende sustituir la validación adecuada realizada en el Hub, sino evitar las inconsistencias locales siempre que sea posible (por ejemplo: pasar repo_type en repo_id está prohibido).

Reglas:

  • Entre 1 y 96 caracteres.
  • “repo_name” o “namespace/repo_name”
  • [a-zA-Z0-9] o ”-”, ”_”, ”.”
  • ”—” y “..” están prohibidos

Válido: "foo", "foo/bar", "123", "Foo-BAR_foo.bar123"

No válido: "datasets/foo/bar", ".repo_id", "foo--bar", "foo.git"

Ejemplo:

>>> 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'.

Discutido en https://github.com/huggingface/huggingface_hub/issues/1008. En moon-landing (repositorio interno):

smoothly_deprecate_legacy_arguments

No es exactamente un validador, pero también se ejecutó.

huggingface_hub.utils._validators.smoothly_deprecate_legacy_arguments

< >

( fn_name: strkwargs: dict )

Deprecar de forma gradual los argumentos heredados en la base de código de huggingface_hub.

Esta función ignora algunos argumentos obsoletos de los kwargs y avisa al usuario de que se ignoran. El objetivo es evitar romper el código existente mientras se guía al usuario hacia la nueva forma de hacer las cosas.

Lista de argumentos obsoletos:

  • proxies: Para configurar los proxies, el usuario debe usar la variable de entorno HTTP_PROXY o configurar manualmente el httpx2.Client mediante la función set_client_factory().

    En huggingface_hub 0.x, proxies era un diccionario que se pasaba directamente a requests.request. Desde huggingface_hub 1.x, ya no se admiten proxies por solicitud. En particular, no es posible configurar proxies a nivel de solicitud. La solución es configurarlo globalmente mediante la función set_client_factory() o mediante la variable de entorno HTTP_PROXY.

    Para más detalles, consulte:

  • resume_download: obsoleto sin reemplazo. huggingface_hub siempre reanuda las descargas cuando es posible.

  • force_filename: obsoleto sin reemplazo. El nombre de archivo siempre es el mismo que en el Hub.

  • local_dir_use_symlinks: obsoleto sin reemplazo. La descarga en un directorio local ya no utiliza enlaces simbólicos.

Update on GitHub