Huggingface-hub

Latest version: v0.23.4

Safety actively analyzes 640072 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 14

0.13.1

Not secure
Patch to fix `upload_folder` when passing `path_in_repo="."`. That was a breaking change compared to `0.12.1`. Also added more validation around the `path_in_repo` attribute to improve UX.

* Fix `path_in_repo` validation when committing files by Wauplin in https://github.com/huggingface/huggingface_hub/pull/1382


**Full Changelog**: https://github.com/huggingface/huggingface_hub/compare/v0.13.0...v0.13.1

0.13.0

Not secure
Download files to a specific folder

It is now possible to download files from the Hub and move them to a specific folder!

Two behaviors are possible: either create symlinks or move the files from the cache. This can be controlled with the `local_dir_use_symlinks` input parameter. The default -and recommended- value is `"auto"` which will duplicate small files to ease user experience (no symlinks when editing a file) and create symlinks for big files (save disk usage).

py
from huggingface_hub import snapshot_download
or "from huggingface_hub import hf_hub_download"

Download and cache files + duplicate small files (<5MB) to "my-folder" + add symlinks for big files
snapshot_download(repo_id, local_dir="my-folder")

Download and cache files + add symlinks in "my-folder"
snapshot_download(repo_id, local_dir="my-folder", local_dir_use_symlinks=True)

Duplicate files already existing in cache and/or download missing files directly to "my-folder"
snapshot_download(repo_id, local_dir="my-folder", local_dir_use_symlinks=False)


* Download file to specific destination by Wauplin in 1360

Documentation

Efforts to improve documentation have continued. The [guides overview](https://huggingface.co/docs/huggingface_hub/main/en/guides/overview) has been refactored to display which topics are covered (repository, upload, download, search, inference, community tab, cache, model cards, space management and integration).

Upload / Download files

The [repository](https://huggingface.co/docs/huggingface_hub/main/en/guides/repository), [upload](https://huggingface.co/docs/huggingface_hub/main/en/guides/upload) and [download](https://huggingface.co/docs/huggingface_hub/main/en/guides/download) guides have been revisited to showcase the different possibilities to manage a repository and upload/download files to/from it. The focus has been explicitly put on the HTTP endpoints rather than the git cli.

* Refactor guides section + promote HTTP over GIT by Wauplin in 1338

Integrate a library

A new guide has been added on [how to integrate any ML framework](https://huggingface.co/docs/huggingface_hub/main/en/guides/integrations) with the Hub. It explains what is meant by that and how to do it. Here is the summary table to remember:

![2023-03-07_16-32](https://user-images.githubusercontent.com/11801849/223472691-f5d67882-13d7-48b4-8966-2bb25ef7063c.png)

* Write Mixins/Integration guide by Wauplin in 1362

Other

* Add repo_type to repo_info docstring by albertvillanova in 1347

New endpoints + QOL improvements

Duplicate a Space

It's now possible to [duplicate a Space](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.HfApi.duplicate_space) programmatically!

py
>>> from huggingface_hub import duplicate_space

Duplicate a Space to your account
>>> duplicate_space("multimodalart/dreambooth-training")
RepoUrl('https://huggingface.co/spaces/nateraw/dreambooth-training',...)


* :sparkles: add duplicate_space by nateraw in 1353

`delete_patterns` in `upload_folder`

New input parameter `delete_patterns` for the `upload_folder` method. It allows to delete some remote files before pushing a folder to the Hub, in a single commit. Useful when you don't exactly know which files have already been pushed. Here is an example to upload log files while deleting existing logs on the Hub:

py
api.upload_folder(
folder_path="/path/to/local/folder/logs",
repo_id="username/trained-model",
path_in_repo="experiment/logs/",
allow_patterns="*.txt", Upload all local text files
delete_patterns="*.txt", Delete all remote text files before
)


* Add delete_patterns option to upload_folder by Wauplin in 1370

List repo history

Get the repo history (i.e. all the commits) for a given revision.

py
Get initial commit on a repo
>>> from huggingface_hub import list_repo_commits
>>> initial_commit = list_repo_commits("gpt2")[-1]

Initial commit is always a system commit containing the `.gitattributes` file.
>>> initial_commit
GitCommitInfo(
commit_id='9b865efde13a30c13e0a33e536cf3e4a5a9d71d8',
authors=['system'],
created_at=datetime.datetime(2019, 2, 18, 10, 36, 15, tzinfo=datetime.timezone.utc),
title='initial commit',
message='',
formatted_title=None,
formatted_message=None
)


* Add list_repo_commits to list git history of a repo by Wauplin in 1331

Accept token in `huggingface-cli login`

`--token` and `--add-to-git-credential` option have been added to login directly from the CLI using an environment variable. Useful to login in a Github CI script for example.


huggingface-cli login --token $HUGGINGFACE_TOKEN --add-to-git-credential


* Add token and git credentials to login cli command by silvanocerza in 1372
* token in CLI login docs by Wauplin (direct commit on main)

Telemetry helper

Helper for external libraries to track usage of specific features of their package. Telemetry can be globally disabled by the user using `HF_HUB_DISABLE_TELEMETRY`.

py
from huggingface_hub.utils import send_telemetry

send_telemetry("gradio/local_link", library_name="gradio", library_version="3.22.1")


* Add utility to send telemetry by Wauplin in 1344

Breaking change

When loading a model card with an invalid `model_index` in the metadata, an error is explicitly raised. Previous behavior was to trigger a warning and ignore the model_index. This was problematic as it could lead to a loss of information. Fixing this is a breaking change but impact should be limited as the server is already rejecting invalid model cards. An optional `ignore_metadata_errors` argument (default to False) can be used to load the card with only a warning.

* Explicit raise on invalid model_index + add ignore_metadata_errors option by Wauplin in 1377

Bugfixes & small improvements

Model cards, datasets cards and space cards

A few improvements in repo cards: expose `RepoCard` as top-level, dict-like methods for `RepoCardData` object (1354), updated template and improved type annotation for metadata.

* Updating MC headings by EziOzoani in 1367
* Switch datasets type in ModelCard to a list of datasets by davanstrien in 1356
* Expose `RepoCard` at top level + few qol improvements by Wauplin in 1354
* Explicit raise on invalid model_index + add ignore_metadata_errors option by Wauplin in 1377

Misc

* Fix contrib CI for timm by Wauplin in 1346
* :ambulance: hotfix isHf test user permissions bug by nateraw in 1357
* Remove unused private methods by Wauplin in 1359
* Updates types for RepoCards fields by davanstrien in 1358
* some typos by Wauplin (direct commit on main)
* [WIP] make repr formatting narrower by davanstrien in 903
* Add ReprMixin to Repofile by Wauplin (direct commit on main)
* Fix ReprMixin for python3.7 + test by Wauplin in 1380
* fix create_commit on lowercased repo_id + add regression test by Wauplin in 1376
* FIX create_repo with exists_ok but no permission by Wauplin in 1364

0.12.1

Not secure
Hot-fix to remove authorization header when following redirection (using `cached_download`). Fix was already implemented for `hf_hub_download` but we forgot about this one. Has only a consequence when downloading LFS files from Spaces. Problem arose since a server-side change on how files are served. See https://github.com/huggingface/huggingface_hub/pull/1345.

**Full Changelog**: https://github.com/huggingface/huggingface_hub/compare/v0.12.0...v0.12.1

0.12.0

Not secure
Spaces on steroids 🚀

Spaces support has been substantially enhanced. You can now:
- Request hardware for your Space !
- Configure your Space secrets
- Get runtime information about your Space

py
Assign hardware when creating the Space
api.create_repo(repo_id=repo_id, repo_type="space", space_sdk="gradio", space_hardware="cpu-upgrade")

Configure some secrets
api.add_space_secret(repo_id=repo_id, key="HF_TOKEN", value="hf_api_***")

Request hardware on the fly
api.request_space_hardware(repo_id=repo_id, hardware="t4-medium")

Get Space runtime (state, hardware, sdk,...)
api.get_space_runtime(repo_id=repo_id)


Visit the [docs](https://huggingface.co/docs/huggingface_hub/main/en/guides/manage_spaces) for more details.

* Manage space hardware and secrets programmatically by Wauplin in 1243
* Mock Space tests requiring GPUs by Wauplin in 1263
* Remove `get_space_secrets` endpoint by Wauplin in 1264

**And in bonus:** Spaces now support Dockerfile natively !

py
api.create_repo(repo_id=repo_id, repo_type="space", space_sdk="docker")


Check out [the docs](https://huggingface.co/docs/hub/spaces-sdks-docker) for more details.

New features and improvements for `HfApi`

List all branches and tags from a repo

It's now possible to list branches/tags from a repo, getting exact `ref` and `target_commit`.
More details [in the docs](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.HfApi.list_repo_refs).

py
>>> api.list_repo_refs("bigcode/the-stack", repo_type='dataset')
GitRefs(
branches=[
GitRefInfo(name='main', ref='refs/heads/main', target_commit='18edc1591d9ce72aa82f56c4431b3c969b210ae3'),
GitRefInfo(name='v1.1.a1', ref='refs/heads/v1.1.a1', target_commit='f9826b862d1567f3822d3d25649b0d6d22ace714')],
converts=[],
tags=[
GitRefInfo(name='v1.0', ref='refs/tags/v1.0', target_commit='c37a8cd1e382064d8aced5e05543c5f7753834da')
]
)


* List branches and tags from a repo by Wauplin in 1276

Manage your "favorite repos" list

New endpoints to [like](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.HfApi.like) a repo, [unlike](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.HfApi.unlike) it and [list_liked_repos](https://huggingface.co/docs/huggingface_hub/main/package_reference/hf_api#huggingface_hub.HfApi.list_liked_repos).

* Add method to list liked repos by Wauplin in 1254
* Fix list_liked_repos (only public likes are returned) by Wauplin in 1273
* Fix like test by Wauplin (direct commit on main)

Get the "real" `repo_id` when creating a repo

When using [create_repo](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.HfApi.create_repo), one can provide a simple `repo_name` without specifying a namespace (example: `"my-cool-model"` instead of `"Wauplin/my-cool-model"`). This was annoying for as one could easily know if a namespace has been added to the provided repo_id. To facilitate this, the return value of `create_repo` is now an instance of [RepoUrl](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.RepoUrl) which contains information like the endpoint, namespace, repo_id and repo_type.

* Extend create_repo return value by Wauplin in 1268

Create branch from any revision

By default, new branches start from main `HEAD`. It's now possible to specify any branch, tag or commit id to start from.

* Create branch from given revision by Wauplin in 1293

Modelcards

Modelcards module is getting some adjustments to better integrate with the Hub. The scope of this work is larger than "just" `huggingface_hub` and resulted in the launch of the [HF Model Card Guidebook](https://huggingface.co/docs/hub/model-card-guidebook) to help operationalize model cards in the ML community.

* Clarify what "More Resources" is by breaking it into its parts. by meg-huggingface in 1238
* Adding "summary" variables by meg-huggingface in 1248
* `datasetcard_template`: I think linking to a GH user does not make sense anymore now that dataset repos are fully on the Hub by julien-c in 1257
* Push empty model card and dataset card to the Hub by Wauplin in 1261
* [Dataset | Model card] When pushing to template repos, work on actual raw contents by julien-c in 1282
* Update `REGEX_YAML_BLOCK` by julien-c in 1285
* Make model use more visible by osanseviero in 1286

Documentation updates

Quite some effort has been put into the documentation in the past few weeks:
- a new [landing page](https://huggingface.co/docs/huggingface_hub/main/en/index)
- a more detailed [installation page](https://huggingface.co/docs/huggingface_hub/main/en/installation)
- a new page explaining the difference between [HTTP vs GIT approaches](https://huggingface.co/docs/huggingface_hub/main/en/concepts/git_vs_http)
- revisited ["Searching the Hub" page ](https://huggingface.co/docs/huggingface_hub/searching-the-hub)
- small updates in the existing docs to add some examples and consistency

* Revisit documentation part 1: divio-like landing page, installation page, configuration page by Wauplin in 1233
* Updates in docs by Wauplin in 1235
* Doc page: git vs http by Wauplin in 1245
* Minor suggestions post 1245 by osanseviero in 1249
* fix broken urls in docs by Wauplin in 1253
* [Minor doc tweak] *currently... by julien-c in 1256
* Update Repository docstring by Wauplin in 1297
* add link to create_repo by Wauplin in 1299
* Document .no_exist folder by Wauplin in 1308
* Revisit "search the hub" page (+HfApi reference page) by Wauplin in 1303

Test suite for dependent libraries

`huggingface_hub` is getting more and more mature but you might still have some friction if you are maintainer of a library depending on `huggingface_hub`. To help detect breaking changes that would affect third-party libraries, we built a framework to run simple end-to-end tests in our CI. This is still preliminary work but the hope is make `hfh` ecosystem more and more robust over time. Check out [our README](https://github.com/huggingface/huggingface_hub/tree/main/contrib) for more details.

* [RFC] Contrib test suite + tests for timm and sentence_transformers by Wauplin in 1200

Faster download

Goal is to download files faster. First step has been to increase the chunk size by which the files are uploaded. Second step has been to add an optional Rust extension. This is not officially documented for now as we are internally assessing its benefits and limits. Installing and activating `hf_transfer` is purely optional.

* Enabling hf_transfer use. by Narsil in 1272
* Increase the chunk size for faster download by Narsil in 1267

Breaking changes

- `Repository` "clone_from" feature do not create the remote repository if it doesn't exist on the Hub. Please use [`create_repo`](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/hf_api#huggingface_hub.HfApi.create_repo) first before cloning it locally. The `private` init argument has also been removed as it was not needed anymore.
- `allow_regex` and `ignore_regex` have been removed from [`snapshot_download`](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/file_download#huggingface_hub.snapshot_download) in favor `allow_patterns` and `ignore_patterns`.
- git-based implementation of [`push_to_hub_fastai`](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/mixins#huggingface_hub.push_to_hub_fastai) has been removed in favor of the HTTP-based approach. Same for [`ModelHubMixin`](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/mixins#huggingface_hub.ModelHubMixin), [`PyTorchModelHubMixin`](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/mixins#huggingface_hub.PyTorchModelHubMixin), `push_to_hub_keras` and [`KerasModelHubMixin`](https://huggingface.co/docs/huggingface_hub/main/en/package_reference/mixins#huggingface_hub.KerasModelHubMixin).
- `create_repo` is now forced to use keyword-arguments. Same for `metadata_eval_result`.

* Remove deprecated code in v0.12 by Wauplin in 1196

QOL improvements

Not really some features, not really some fixes. But definitely a quality of life improvement for users 🙂
* Progress bar when uploading LFS files by Wauplin in 1266
* tell user how to paste token on Windows by fristhon in 1289
* fixes 1290 - check for existing token during interpreter login by lonnen in 1291
* Store token in configurable HF_HOME (in HfFolder) by Wauplin in 1236
* Compute sha by chunks when uploading by Wauplin in 1296

Internal

CI runs on Windows !

* Add windows machine for CI by Wauplin in 1112

Misc

* Remove obsolete comment by severo in 1265
* fix: authorization header should never forwarded by rtrompier in 1269
* refacto Offline repository tests by Wauplin (direct commit on main)
* Revert "refacto Offline repository tests" by Wauplin (direct commit on main)
* 1278 More robust temporary directory by Wauplin in 1279
* Refacto Repository tests by Wauplin in 1277
* skip flake8 B028 by Wauplin (direct commit on main)

Bugfixes & small improvements

* Fix metadata_update for verified evaluations by lewtun in 1214
* Accept pathlib.Path in upload_file by Wauplin in 1247
* Skip failing tests related to DatasetFilter by Wauplin in 1251
* fix tasks ids test by Wauplin (direct commit on main)
* Fix InferenceAPI on image task by Wauplin in 1270
* Update "move_repo" doc url + fix Bigcode test in CI by Wauplin in 1292
* Fix test_comment_discussion by Wauplin in 1295
* Handle `hf://` urls + raise `ValueError` if repo type is unknown by Wauplin in 1298
* Make ModelSearchArguments and DatasetSearchArguments more robust by Wauplin in 1300
* Make tests more robust (no pre-existing repo on staging Hub) by Wauplin in 1302
* fix: use cache for snapshots even if refs does not exist by brycedrennan Wauplin in 1306
* Fix caching error when offline and no refs dir by Wauplin in 1307

0.11.1

Not secure
Hot-fix to fix permission issues when downloading with `hf_hub_download` or `snapshot_download`. For more details, see https://github.com/huggingface/huggingface_hub/pull/1220, https://github.com/huggingface/huggingface_hub/issues/1141 and https://github.com/huggingface/huggingface_hub/issues/1215.

**Full changelog:** https://github.com/huggingface/huggingface_hub/compare/v0.11.0...v0.11.1

0.11

delete_tag(repo_id, tag="something") If you created a tag by mistake

create_branch(repo_id, branch="experiment-154")
delete_branch(repo_id, branch="experiment-1") Clean some old branches


* Add a `create_tag` method to create tags from the HTTP endpoint by Wauplin in 1089
* Add `delete_tag` method to `HfApi` by Wauplin in 1128
* Create tag twice doesn't work by Wauplin in 1149
* Add "create_branch" and "delete_branch" endpoints by Wauplin 1181

Upload lots of files in a single commit
Making a very large commit was previously tedious. Files are now processed by chunks which makes it possible to upload 25k files in a single commit (and 1Gb payload limitation if uploading only non-LFS files). This should make it easier to upload large datasets.

* Create commit by streaming a ndjson payload (allow lots of file in single commit) by Wauplin in 1117

Delete an entire folder
py
from huggingface_hub import CommitOperationDelete, create_commit, delete_folder

Delete a single folder
delete_folder(repo_id=repo_id, path_in_repo="logs/")

Alternatively, use the low-level `create_commit`
create_commit(
repo_id,
operations=[
CommitOperationDelete(path_in_repo="old_config.json") Delete a file
CommitOperationDelete(path_in_repo="logs/") Delete a folder
],
commit_message=...,
)

* Delete folder with commit endpoint by Wauplin in 1163

Support pagination when listing repos
In the future, listing models, datasets and spaces will be paginated on the Hub by default. To avoid breaking changes, `huggingface_hub` follows already pagination. Output type is currently a list (deprecated), will become a generator in `v0.14`.

* Add support for pagination in list_models list_datasets and list_spaces by Wauplin 1176
* Deprecate output in list_models by Wauplin in 1143

Misc

* Allow create PR against non-main branch by Wauplin in 1168
* 1162 Reorder operations correctly in commit endpoint by Wauplin in 1175

Login, tokens and authentication

Authentication has been revisited to make it as easy as possible for the users.

Unified `login` and `logout` methods

py
from huggingface_hub import login, logout

`login` detects automatically if you are running in a notebook or a script
Launch widgets or TUI accordingly
login()

Now possible to login with a hardcoded token (non-blocking)
login(token="hf_***")

If you want to bypass the auto-detection of `login`
notebook_login() still available
interpreter_login() to login from a script

Logout programmatically
logout()


sh
Still possible to login from CLI
huggingface-cli login


* Unified login/logout methods by Wauplin in 1111

Set token only for a `HfApi` session

py
from huggingface_hub import HfApi

Token will be sent in every request but not stored on machine
api = HfApi(token="hf_***")

* Add token attribute to HfApi by Wauplin in 1116

Stop using `use_auth_token` in favor of `token`, everywhere

`token` parameter can now be passed to every method in `huggingface_hub`. `use_auth_token` is still accepted where it previously existed but the mid-term goal (~6 months) is to deprecate and remove it.

* Replace `use_auth_token` arg by `token` everywhere by Wauplin in 1122

Respect git credential helper from the user

Previously, token was stored in the `git credential store`. Can now be in any helper configured by the user -keychain, cache,...-.

* Refactor git credential handling in login workflow by Wauplin in 1138

Better error handling

Helper to dump machine information

sh
Dump all relevant information. To be used when reporting an issue.
➜ huggingface-cli env

Copy-and-paste the text below in your GitHub issue.

- huggingface_hub version: 0.11.0.dev0
- Platform: Linux-5.15.0-52-generic-x86_64-with-glibc2.35
- Python version: 3.10.6
...

* 1173 Add dump env helper by Wauplin in 1177

Misc

* Cache not found is not an error by singingwolfboy in 1101
* Propagate error messages when multiple on BadRequest by Wauplin in 1115
* Add error message from `x-error-message` header if exists by Wauplin in 1121

Modelcards

Few improvements/fixes in the modelcard module:

* :art: make repocard content a property by nateraw in 1147
* :white_check_mark: fix content string in repocard tests by nateraw in 1155
* Add Hub verification token to evaluation metadata by lewtun in 1142
* Use default `model_name` in `metadata_update` by lvwerra in 1157
* Refer to modelcard creator app from doc by Wauplin in 1184
* Parent Model --> Finetuned from model by meg-huggingface 1191
* FIX overwriting metadata when both verified and unverified reported values by Wauplin in 1186

Cache assets

New feature to provide a path in the cache where any downstream library can store assets (processed data, files from the web, extracted data, rendered images,...)

* [RFC] Proposal for a way to cache files in downstream libraries by Wauplin in 1088

Documentation updates
* Fixing a typo in the doc. by Narsil in 1113
* Fix docstring of list_datasets by albertvillanova in 1125
* Add repo_type=dataset possibility to guide by Wauplin in 1134
* Fix PyTorch & Keras mixin doc by lewtun in 1139
* Update how-to-manage.mdx by severo in 1150
* Typo fix by meg-huggingface in 1166
* Adds link to model card metadata spec by meg-huggingface in 1171
* Removing "Related Models" & just asking for "Parent Model" by meg-huggingface in 1178

Breaking changes

- Cannot provide an organization to `create_repo`
- `identical_ok` removed in `upload_file`
- Breaking changes in arguments for `validate_preupload_info`, `prepare_commit_payload`, `_upload_lfs_object` (internal helpers for the commit API)
- `huggingface_hub.snapshot_download` is not exposed as a public module anymore

Deprecations
* Remove deprecated code from v0.9, v0.10 and v0.11 by Wauplin in 1092
* Rename languages to langage + remove duplicate code in tests by Wauplin in 1169
* Deprecate output in list_models by Wauplin in 1143
* Set back feature to create a repo when using clone_from by Wauplin in 1187

Internal
* Configure pytest to run on staging by default + flags in config by Wauplin in 1093
* fix search models test by Wauplin in 1106
* Add mypy in the CI (and fix existing type issues) by Wauplin in 1097
* Fix deprecation warnings for assertEquals in tests by Wauplin in 1135
* Skip failing test in ci by Wauplin in 1148
* :green_heart: fix mypy ci by nateraw in 1167
* Update pr docs actions by mishig25 in 1170
* Revert "Update pr docs actions" by mishig25 1192

Bugfixes & small improvements
* Expose list_spaces by osanseviero in 1132
* respect NO_COLOR env var by singingwolfboy in 1103
* Fix list_models bool parameters by Wauplin in 1152
* FIX url encoding in hf_hub_url by Wauplin in 1164
* Fix cannot create pr on foreign repo by Wauplin 1183
* Fix `HfApi.move_repo(...)` and complete tests by Wauplin in 1136
* Commit empty files as regular and warn user by Wauplin in 1180
* Parse file size in get_hf_file_metadata by Wauplin 1179
* Fix get file size on lfs by Wauplin 1188
* More robust create relative symlink in cache by Wauplin in 1109
* Test running CI on Python 3.11 1189

Page 7 of 14

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.