Hub Python Library documentation

Utilitários

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilitários

Configurar o registro

O pacote huggingface_hub expõe uma utilidade de logging para controlar o nível de log do próprio pacote. Você pode importá-lo da seguinte forma:

from huggingface_hub import logging

Em seguida, você pode definir a verbosidade para atualizar a quantidade de logs 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(...)

Os níveis devem ser entendidos da seguinte forma:

  • error: exibe apenas logs críticos sobre o uso que podem resultar em um erro ou comportamento inesperado.
  • warning: exibe logs que não são críticos, mas cujo uso pode resultar em comportamento não intencional. Além disso, logs informativos importantes podem ser exibidos.
  • info: exibe a maioria dos logs, incluindo alguns registros detalhados sobre o que está acontecendo nos bastidores. Se algo estiver se comportando de maneira inesperada, recomendamos alternar o nível de verbosidade para este, a fim de obter mais informações.
  • debug: exibe todos os logs, incluindo alguns logs internos que podem ser usados para rastrear exatamente o que está acontecendo por baixo dos panos.

huggingface_hub.utils.logging.get_verbosity

< >

( )

Retorna o nível atual do logger raiz do HuggingFace Hub.

O HuggingFace Hub possui os seguintes níveis de log:

  • 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) — Nível de log, por exemplo, huggingface_hub.logging.DEBUG e huggingface_hub.logging.INFO.

Define o nível do logger raiz do HuggingFace Hub.

huggingface_hub.utils.logging.set_verbosity_info

< >

( )

Define a verbosidade para logging.INFO.

huggingface_hub.utils.logging.set_verbosity_debug

< >

( )

Define a verbosidade para logging.DEBUG.

huggingface_hub.utils.logging.set_verbosity_warning

< >

( )

Define a verbosidade para logging.WARNING.

huggingface_hub.utils.logging.set_verbosity_error

< >

( )

Define a verbosidade para logging.ERROR.

huggingface_hub.utils.logging.disable_propagation

< >

( )

Desative a propagação das saídas de log da biblioteca. Observe que a propagação de logs é desativada por padrão.

huggingface_hub.utils.logging.enable_propagation

< >

( )

Ative a propagação das saídas de log da biblioteca. Desative o manipulador padrão do HuggingFace Hub para evitar log duplicado, caso o logger raiz tenha sido configurado.

Métodos auxiliares específicos do repositório

Os métodos expostos abaixo são relevantes ao modificar módulos da própria biblioteca huggingface_hub. O uso deles não deve ser necessário se você utiliza huggingface_hub e não os modifica.

huggingface_hub.utils.logging.get_logger

< >

( name: str | None = None )

Parâmetros

  • name (str, opcional) — O nome do logger a ser obtido, geralmente o nome do arquivo

Retorna um logger com o nome especificado. Esta função não deve ser acessada diretamente pelos usuários da biblioteca.

Exemplo:

>>> from huggingface_hub import logging

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

Configure barras de progresso

Barras de progresso são uma ferramenta útil para exibir informações ao usuário enquanto uma tarefa de longa duração está sendo executada (por exemplo, ao baixar ou enviar arquivos). huggingface_hub expõe um wrapper de tqdm para exibir barras de progresso de forma consistente em toda a biblioteca.

Por padrão, as barras de progresso estão habilitadas. Você pode desativá-las globalmente definindo a variável de ambiente HF_HUB_DISABLE_PROGRESS_BARS. Você também pode habilitá-las/desativá-las usando enable_progress_bars() e disable_progress_bars. Se definida, a variável de ambiente tem prioridade sobre os 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()

Controle específico de grupo das barras de progresso

Você também pode habilitar ou desabilitar barras de progresso para grupos específicos. Isso permite gerenciar a visibilidade das barras de progresso de forma mais granular em diferentes partes do seu aplicativo ou biblioteca. Quando uma barra de progresso é desabilitada para um grupo, todos os subgrupos sob ele também são afetados, a menos que haja uma sobrescrita explícita.

# 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) — O nome do grupo a ser verificado; se for None, verifica a configuração global.

Retorna

bool

True se as barras de progresso estiverem desativadas, False caso contrário.

Verifique se as barras de progresso estão desativadas globalmente ou para um grupo específico.

Esta função retorna se as barras de progresso estão desativadas para um grupo específico ou globalmente. Ela verifica primeiro a variável de ambiente HF_HUB_DISABLE_PROGRESS_BARS e, em seguida, as configurações programáticas.

disable_progress_bars

classe huggingface_hub.utils.disable_progress_bars

< >

( name: str | None = None )

Parâmetros

  • name (str, opcional) — O nome do grupo para o qual as barras de progresso devem ser desativadas. Se for None, as barras de progresso são desativadas globalmente.

Exceções

Warning

  • Warning — Se a variável de ambiente impedir alterações.

Desative as barras de progresso globalmente ou para um grupo especificado.

Esta função atualiza o estado das barras de progresso com base em um nome de grupo. Se nenhum nome de grupo for fornecido, todas as barras de progresso são desativadas. A operação respeita a configuração da variável de ambiente HF_HUB_DISABLE_PROGRESS_BARS.

Funciona tanto como uma chamada regular quanto como um gerenciador de contexto: disable_progress_bars() # desativa até enable_progress_bars() with disable_progress_bars(): # desativa para o bloco, reativa na saída …

enable_progress_bars

huggingface_hub.utils.enable_progress_bars

< >

( name: str | None = None )

Parâmetros

  • name (str, opcional) — O nome do grupo para o qual as barras de progresso devem ser habilitadas. Se for None, as barras de progresso são habilitadas globalmente.

Exceções

Warning

  • Warning — Se a variável de ambiente impedir alterações.

Ative as barras de progresso globalmente ou para um grupo especificado.

Esta função define as barras de progresso como habilitadas para o grupo especificado ou globalmente, caso nenhum grupo seja especificado. A operação está sujeita à configuração de ambiente HF_HUB_DISABLE_PROGRESS_BARS.

Configurando o backend HTTP

No huggingface_hub v0.x, as requisições HTTP eram tratadas com requests, e a configuração era feita via configure_http_backend. Como agora usamos httpx2, a configuração funciona de forma diferente: você deve fornecer uma função de fábrica que não recebe argumentos e retorna um httpx2.Client. Você pode revisar a implementação padrão aqui para ver quais parâmetros são usados por padrão.

Em algumas configurações, você pode precisar controlar como as requisições HTTP são feitas, por exemplo, ao trabalhar atrás de um proxy. A biblioteca huggingface_hub permite configurar isso globalmente com set_client_factory(). Após a configuração, todas as requisições ao Hub usarão suas configurações personalizadas. Como o huggingface_hub depende do httpx2.Client por baixo dos panos, você pode consultar a documentação do httpx2 para detalhes sobre os parâmetros disponíveis.

Se você está criando uma biblioteca de terceiros e precisa fazer solicitações diretas ao Hub, use get_session() para obter um cliente httpx2 corretamente configurado. Substitua qualquer chamada direta de httpx2.get(...) por get_session().get(...) para garantir o comportamento adequado.

huggingface_hub.set_client_factory

< >

( client_factory: Callable )

Defina a fábrica de cliente HTTP a ser usada pelo huggingface_hub.

A fábrica de clientes é um método que retorna um objeto httpx2.Client. Na primeira chamada para get_session(), a fábrica de clientes será usada para criar um novo objeto httpx2.Client que será compartilhado entre todas as chamadas feitas por huggingface_hub.

Isso pode ser útil se você estiver executando seus scripts em um ambiente específico que exija configuração personalizada (por exemplo, proxy ou certificados personalizados).

Use get_session() para obter um httpx2.Client corretamente configurado.

huggingface_hub.get_session

< >

( )

Obtenha um objeto httpx2.Client, usando a fábrica de transporte do usuário.

Este cliente é compartilhado entre todas as chamadas feitas por huggingface_hub. Portanto, você não deve fechá-lo manualmente.

Use set_client_factory() para personalizar o httpx2.Client.

Em casos raros, você pode querer fechar manualmente a sessão atual (por exemplo, após um SSLError transitório). Você pode fazer isso com close_session(). Uma nova sessão será criada automaticamente na próxima chamada para get_session().

As sessões são sempre fechadas automaticamente quando o processo é encerrado.

huggingface_hub.close_session

< >

( )

Feche o httpx2.Client global usado pelo huggingface_hub.

Se um Client for fechado, ele será recriado na próxima chamada para get_session().

Pode ser útil, por exemplo, se um certificado SSL tiver sido atualizado.

Para código assíncrono, use set_async_client_factory() para configurar um httpx2.AsyncClient e get_async_session() para recuperar um.

huggingface_hub.set_async_client_factory

< >

( async_client_factory: Callable )

Defina a fábrica de cliente HTTP assíncrono a ser usada pelo huggingface_hub.

A fábrica de clientes assíncronos é um método que retorna um objeto httpx2.AsyncClient. Isso pode ser útil se você estiver executando seus scripts em um ambiente específico que exija configuração personalizada (por exemplo, proxy ou certificações personalizadas). Use get_async_session() para obter um httpx2.AsyncClient configurado corretamente.

Diferentemente do httpx2.Client, que é compartilhado entre todas as chamadas feitas por huggingface_hub, o httpx2.AsyncClient não é compartilhado. Recomenda-se o uso de um gerenciador de contexto assíncrono para garantir que o cliente seja fechado corretamente quando o contexto for encerrado.

huggingface_hub.get_async_session

< >

( )

Retorna um objeto httpx2.AsyncClient, usando a fábrica de transporte do usuário.

Use set_async_client_factory() para personalizar o httpx2.AsyncClient.

Diferentemente do httpx2.Client, que é compartilhado entre todas as chamadas feitas por huggingface_hub, o httpx2.AsyncClient não é compartilhado. Recomenda-se o uso de um gerenciador de contexto assíncrono para garantir que o cliente seja fechado corretamente quando o contexto for encerrado.

Diferente do cliente síncrono, o ciclo de vida do cliente assíncrono não é gerenciado automaticamente. Use um gerenciador de contexto assíncrono para tratá-lo corretamente.

O módulo httpx

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

from huggingface_hub.utils import httpx

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

Isso é útil principalmente para bibliotecas de terceiros construídas sobre o huggingface_hub. O huggingface_hub v1.x é construído sobre o httpx, enquanto o v2.x é construído sobre o httpx2 (seu sucessor, distribuído como um pacote separado). Importar o módulo de huggingface_hub.utils em vez de importar o httpx diretamente significa que você sempre obtém a versão que o huggingface_hub realmente usa, e sua biblioteca permanece compatível com ambas as versões principais. Veja esta issue para mais detalhes sobre o plano de migração.

Use isso apenas se precisar de tipos ou exceções do httpx (por exemplo, para capturar erros). Para fazer requisições ao Hub, use get_session() conforme descrito acima.

Tratar erros HTTP

huggingface_hub define seus próprios erros HTTP para refinar o HTTPError lançado pelo httpx2 com informações adicionais enviadas de volta pelo servidor.

Gerar exceção para status

hf_raise_for_status() é o método central para “raise for status” de qualquer solicitação feita ao Hub. Ele encapsula o httpx2.Response.raise_for_status base para fornecer informações adicionais. Qualquer HTTPError lançada é convertida em um 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) — Resposta do servidor.
  • endpoint_name (str, opcional) — Nome do endpoint que foi chamado. Se fornecido, a mensagem de erro será mais completa.

Versão interna de response.raise_for_status() que refinará um possível HTTPError. A exceção lançada será uma instância de HfHubHTTPError.

Este helper é destinado a ser o método único para raise_for_status ao fazer uma chamada ao Hugging Face Hub.

Levanta quando a solicitação falhou:

  • RepositoryNotFoundError Se o repositório de onde o download será feito não puder ser encontrado. Isso pode ocorrer porque ele não existe, porque repo_type não está definido corretamente ou porque o repositório é private e você não tem acesso.
  • GatedRepoError Se o repositório existir, mas for restrito e o usuário não estiver na lista autorizada.
  • RevisionNotFoundError Se o repositório existir, mas a revisão não puder ser encontrada.
  • EntryNotFoundError Se o repositório existe, mas a entrada (por exemplo, o arquivo solicitado) não pôde ser encontrada.
  • BadRequestError Se a solicitação falhou com um erro HTTP 400 BadRequest.
  • HfHubHTTPError Se a solicitação falhou por um motivo não listado acima.

Verifique o modo offline

Você pode verificar programaticamente se o modo offline está habilitado usando is_offline_mode. O modo offline é habilitado definindo HF_HUB_OFFLINE=1 como variável de ambiente.

huggingface_hub.is_offline_mode

< >

( )

Indica se estamos no modo offline para o Hub.

Quando o modo offline está ativado, todas as solicitações HTTP feitas com get_session levantarão uma exceção OfflineModeIsEnabled.

Exemplo:

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)

Erros HTTP

Aqui está uma lista de erros HTTP lançados em huggingface_hub.

HfHubHTTPError

HfHubHTTPError é a classe pai para qualquer erro HTTP do HF Hub. Ela cuida da análise da resposta do servidor e formata a mensagem de erro para fornecer ao usuário o máximo de informações possível.

classe huggingface_hub.errors.HfHubHTTPError

< >

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

HTTPError para ser herdada por qualquer erro HTTP personalizado lançado no HF Hub.

Qualquer HTTPError é convertido, no mínimo, em um HfHubHTTPError. Se alguma informação for enviada de volta pelo servidor, ela será adicionada à mensagem de erro.

Detalhes adicionados:

  • ID da solicitação obtido dos cabeçalhos, na seguinte ordem de precedência: “X-Request-Id”, “X-Amzn-Trace-Id”, “X-Amz-Cf-Id”.
  • Mensagem de erro do servidor do cabeçalho “X-Error-Message”.
  • Mensagem de erro do servidor, caso possamos encontrá-la no corpo da resposta.

Exemplo:

    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 )

Adicione informações adicionais à mensagem inicial do HfHubHTTPError.

RepositoryNotFoundError

classe huggingface_hub.errors.RepositoryNotFoundError

< >

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

Parâmetros

  • repo_id (str ou None) — O id do repositório que não foi encontrado, se puder ser determinado a partir da URL da solicitação.
  • repo_type (str ou None) — O tipo de repositório (“model”, “dataset” ou “space”), se puder ser determinado a partir da URL da solicitação.

Disparada ao tentar acessar uma URL do hf.co com um nome de repositório inválido, ou com o nome de um repositório privado ao qual o usuário não tem acesso.

Exemplo:

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

Disparada ao tentar acessar um repositório restrito para o qual o usuário não está na lista autorizada.

Observação: deriva de RepositoryNotFoundError para garantir compatibilidade reversa.

Exemplo:

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

Parâmetros

  • repo_id (str ou None) — O id do repositório, se puder ser determinado a partir da URL da solicitação.
  • repo_type (str ou None) — O tipo de repositório (“model”, “dataset” ou “space”), se puder ser determinado a partir da URL da solicitação.

Disparada ao tentar acessar uma URL do hf.co com um repositório válido, mas uma revisão inválida.

Exemplo:

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

< >

( )

Disparado por HfApi.resolve_revision() quando uma revisão não pode ser resolvida para um hash de commit: o Hub não pôde ser atingido (modo offline, erro de conexão, tempo limite, indisponibilidade do Hub, …) e nenhuma entrada correspondente foi encontrada no cache local.

BadRequestError

classe huggingface_hub.errors.BadRequestError

< >

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

Disparada por hf_raise_for_status quando o servidor retorna um erro HTTP 400.

Exemplo:

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

< >

( )

Disparado quando a entrada não é encontrada, seja localmente ou remotamente.

Exemplo:

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

Parâmetros

  • repo_id (str ou None) — O id do repositório, se puder ser determinado a partir da URL da solicitação.
  • repo_type (str ou None) — O tipo de repositório (“model”, “dataset” ou “space”), se puder ser determinado a partir da URL da solicitação.

Disparada ao tentar acessar uma URL do hf.co com um repositório e uma revisão válidos, mas com um nome de arquivo inválido.

Exemplo:

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

Disparada ao tentar acessar um arquivo ou snapshot que não está no disco quando a rede está desativada ou indisponível (problema de conexão). A entrada pode existir no Hub.

Exemplo:

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

Disparado por snapshot_download() quando o Hub não pode ser acessado (offline, problema de conexão ou local_files_only=True) e o snapshot em cache é conhecido por estar incompleto: alguns arquivos listados na árvore em cache do repositório estão ausentes do snapshot local.

Esta é uma subclasse de LocalEntryNotFoundError para compatibilidade reversa.

O atributo snapshot_path contém o caminho para o snapshot local incompleto, permitindo que uma biblioteca a jusante localize os arquivos mais recentes em cache, mesmo que sejam conhecidos por serem incompletos.

CachedRepoTreeNotFoundError

classe huggingface_hub.errors.CachedRepoTreeNotFoundError

< >

( )

Lançada por get_cached_repo_tree() quando não há uma listagem de árvore em cache para a revisão solicitada.

A listagem da árvore é preenchida como efeito colateral de snapshot_download().

OfflineModeIsEnabled

classe huggingface_hub.errors.OfflineModeIsEnabled

< >

( )

Ocorrida quando uma solicitação é feita, mas a variável de ambiente HF_HUB_OFFLINE=1 está definida.

Telemetria

huggingface_hub inclui um auxiliar para enviar dados de telemetria. Essas informações nos ajudam a depurar problemas e priorizar novos recursos. Os usuários podem desativar a coleta de telemetria a qualquer momento definindo a variável de ambiente HF_HUB_DISABLE_TELEMETRY=1. A telemetria também é desativada no modo offline (ou seja, ao definir HF_HUB_OFFLINE=1).

Se você é mantenedor de uma biblioteca de terceiros, enviar dados de telemetria é tão simples quanto fazer uma chamada para send_telemetry. Os dados são enviados em uma thread separada para reduzir ao máximo o impacto para os usuários.

huggingface_hub.utils.send_telemetry

< >

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

Parâmetros

  • topic (str) — Nome do tópico que é monitorado. O tópico é usado diretamente para construir a URL. Se você quiser monitorar subtópicos, basta usar a separação por “/”. Exemplos: “gradio”, “transformers/examples”,…
  • library_name (str, opcional) — O nome da biblioteca que está fazendo a requisição HTTP. Será adicionado ao cabeçalho user-agent.
  • library_version (str, opcional) — A versão da biblioteca que está fazendo a requisição HTTP. Será adicionada ao cabeçalho user-agent.
  • user_agent (str, dict, opcional) — As informações do user agent na forma de um dicionário ou de uma única string. Serão complementadas com informações sobre os pacotes instalados.

Envia telemetria que ajuda a rastrear o uso de diferentes bibliotecas do HF.

Esses dados de uso nos ajudam a depurar problemas e priorizar novos recursos. No entanto, entendemos que nem todos desejam compartilhar informações adicionais e respeitamos sua privacidade. Você pode desativar a coleta de telemetria definindo HF_HUB_DISABLE_TELEMETRY=1 como variável de ambiente. A telemetria também é desativada no modo offline (ou seja, ao definir HF_HUB_OFFLINE=1).

A coleta de telemetria é executada em uma thread separada para minimizar o impacto para o usuário.

Exemplo:

>>> 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 inclui validadores personalizados para validar automaticamente os argumentos dos métodos. A validação é inspirada no trabalho realizado no Pydantic para validar type hints, mas com recursos mais limitados.

Decorador genérico

validate_hf_hub_args() é um decorador genérico para encapsular métodos que possuem argumentos seguindo a convenção de nomenclatura do huggingface_hub. Por padrão, todos os argumentos que possuem um validador implementado serão validados.

Se uma entrada não for válida, um HFValidationError é lançado. Apenas o primeiro valor não válido lança um erro e interrompe o processo de validação.

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 )

Exceções

HFValidationError

Valide os valores recebidos como argumento para qualquer método público de huggingface_hub.

O objetivo deste decorador é harmonizar a validação de argumentos reutilizados em todos os lugares. Por padrão, todos os validadores definidos são testados.

Validadores:

  • validate_repo_id(): repo_id deve ser "repo_name" ou "namespace/repo_name". Namespace é um nome de usuário ou uma organização.
  • ~utils.smoothly_deprecate_legacy_arguments: Ignore proxies ao baixar arquivos (deve ser definido globalmente).

Exemplo:

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

< >

( )

Exceção genérica lançada pelos validadores do huggingface_hub.

Herdado de ValueError.

Validadores de argumentos

Os validadores também podem ser usados individualmente. A seguir, há uma lista de todos os argumentos que podem ser validados.

repo_id

huggingface_hub.utils.validate_repo_id

< >

( repo_id: str | None )

Valide se repo_id é válido.

Isso não tem a intenção de substituir a validação adequada feita no Hub, mas sim de evitar inconsistências locais sempre que possível (exemplo: passar repo_type no repo_id é proibido).

Regras:

  • Entre 1 e 96 caracteres.
  • Ou “repo_name” ou “namespace/repo_name”
  • [a-zA-Z0-9] ou ”-”, ”_”, ”.”
  • "—" e ".." são proibidos

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

Não válido: "datasets/foo/bar", ".repo_id", "foo--bar", "foo.git"

Exemplo:

>>> 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 em https://github.com/huggingface/huggingface_hub/issues/1008. Em moon-landing (repositório interno):

smoothly_deprecate_legacy_arguments

Não exatamente um validador, mas também foi executado.

huggingface_hub.utils._validators.smoothly_deprecate_legacy_arguments

< >

( fn_name: strkwargs: dict )

Descontinuar suavemente os argumentos legados na base de código do huggingface_hub.

Esta função ignora alguns argumentos obsoletos dos kwargs e avisa o usuário de que eles estão sendo ignorados. O objetivo é evitar a quebra de código existente, ao mesmo tempo em que orienta o usuário para a nova maneira de fazer as coisas.

Lista de argumentos obsoletos:

  • proxies: Para configurar proxies, o usuário deve usar a variável de ambiente HTTP_PROXY ou configurar manualmente o httpx2.Client usando a função set_client_factory().

    No huggingface_hub 0.x, proxies era um dicionário passado diretamente para requests.request. Desde o huggingface_hub 1.x, proxies por solicitação não são mais suportados. Em particular, não é possível configurar proxies em base por solicitação. A solução é configurá-los globalmente usando a função set_client_factory() ou usando a variável de ambiente HTTP_PROXY.

    Para mais detalhes, consulte:

  • resume_download: descontinuado sem substituto. huggingface_hub sempre retoma downloads sempre que possível.

  • force_filename: descontinuado sem substituto. O nome do arquivo é sempre o mesmo do Hub.

  • local_dir_use_symlinks: descontinuado sem substituto. O download para um diretório local não usa mais links simbólicos.

Update on GitHub