hfutils 0.4.2__tar.gz → 0.4.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. {hfutils-0.4.2/hfutils.egg-info → hfutils-0.4.3}/PKG-INFO +22 -22
  2. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/config/meta.py +1 -1
  3. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/index/fetch.py +58 -42
  4. {hfutils-0.4.2 → hfutils-0.4.3/hfutils.egg-info}/PKG-INFO +22 -22
  5. {hfutils-0.4.2 → hfutils-0.4.3}/LICENSE +0 -0
  6. {hfutils-0.4.2 → hfutils-0.4.3}/MANIFEST.in +0 -0
  7. {hfutils-0.4.2 → hfutils-0.4.3}/README.md +0 -0
  8. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/__init__.py +0 -0
  9. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/__main__.py +0 -0
  10. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/archive/__init__.py +0 -0
  11. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/archive/base.py +0 -0
  12. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/archive/rar.py +0 -0
  13. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/archive/sevenz.py +0 -0
  14. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/archive/tar.py +0 -0
  15. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/archive/zip.py +0 -0
  16. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/cache/__init__.py +0 -0
  17. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/cache/delete.py +0 -0
  18. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/config/__init__.py +0 -0
  19. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/__init__.py +0 -0
  20. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/base.py +0 -0
  21. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/cli.py +0 -0
  22. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/clone.py +0 -0
  23. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/dispatch.py +0 -0
  24. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/download.py +0 -0
  25. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/ils.py +0 -0
  26. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/index.py +0 -0
  27. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/ls.py +0 -0
  28. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/ls_repo.py +0 -0
  29. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/rollback.py +0 -0
  30. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/tree.py +0 -0
  31. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/upload.py +0 -0
  32. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/entry/whoami.py +0 -0
  33. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/index/__init__.py +0 -0
  34. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/index/hash.py +0 -0
  35. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/index/local_fetch.py +0 -0
  36. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/index/make.py +0 -0
  37. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/index/validate.py +0 -0
  38. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/operate/__init__.py +0 -0
  39. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/operate/base.py +0 -0
  40. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/operate/download.py +0 -0
  41. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/operate/upload.py +0 -0
  42. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/operate/validate.py +0 -0
  43. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/repository/__init__.py +0 -0
  44. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/repository/base.py +0 -0
  45. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/repository/clone.py +0 -0
  46. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/repository/rollback.py +0 -0
  47. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/__init__.py +0 -0
  48. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/archive.py +0 -0
  49. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/binary.py +0 -0
  50. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/data.py +0 -0
  51. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/download.py +0 -0
  52. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/irregular_repo.json +0 -0
  53. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/logging.py +0 -0
  54. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/model.py +0 -0
  55. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/number.py +0 -0
  56. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/path.py +0 -0
  57. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/session.py +0 -0
  58. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/temp.py +0 -0
  59. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/tqdm_.py +0 -0
  60. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/type_.py +0 -0
  61. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils/utils/walk.py +0 -0
  62. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils.egg-info/SOURCES.txt +0 -0
  63. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils.egg-info/dependency_links.txt +0 -0
  64. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils.egg-info/entry_points.txt +0 -0
  65. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils.egg-info/requires.txt +0 -0
  66. {hfutils-0.4.2 → hfutils-0.4.3}/hfutils.egg-info/top_level.txt +0 -0
  67. {hfutils-0.4.2 → hfutils-0.4.3}/requirements-7z.txt +0 -0
  68. {hfutils-0.4.2 → hfutils-0.4.3}/requirements-build.txt +0 -0
  69. {hfutils-0.4.2 → hfutils-0.4.3}/requirements-doc.txt +0 -0
  70. {hfutils-0.4.2 → hfutils-0.4.3}/requirements-rar.txt +0 -0
  71. {hfutils-0.4.2 → hfutils-0.4.3}/requirements-test.txt +0 -0
  72. {hfutils-0.4.2 → hfutils-0.4.3}/requirements-transfer.txt +0 -0
  73. {hfutils-0.4.2 → hfutils-0.4.3}/requirements.txt +0 -0
  74. {hfutils-0.4.2 → hfutils-0.4.3}/setup.cfg +0 -0
  75. {hfutils-0.4.2 → hfutils-0.4.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hfutils
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Useful utilities for huggingface
5
5
  Home-page: https://github.com/deepghs/hfutils
6
6
  Author: narugo1992
@@ -30,28 +30,13 @@ Requires-Dist: natsort
30
30
  Requires-Dist: urlobject
31
31
  Requires-Dist: fsspec>=2024
32
32
  Requires-Dist: random_user_agent
33
- Provides-Extra: test
34
- Requires-Dist: coverage>=5; extra == "test"
35
- Requires-Dist: mock>=4.0.3; extra == "test"
36
- Requires-Dist: flake8~=3.5; extra == "test"
37
- Requires-Dist: testfixtures>=6.18.5; extra == "test"
38
- Requires-Dist: pytest~=6.2.5; extra == "test"
39
- Requires-Dist: pytest-cov~=3.0.0; extra == "test"
40
- Requires-Dist: pytest-mock~=3.6.1; extra == "test"
41
- Requires-Dist: pytest-xdist>=1.34.0; extra == "test"
42
- Requires-Dist: pytest-rerunfailures~=10.2; extra == "test"
43
- Requires-Dist: pytest-timeout~=2.0.2; extra == "test"
44
- Requires-Dist: pytest-benchmark~=3.4.0; extra == "test"
45
- Requires-Dist: easydict<2,>=1.7; extra == "test"
46
- Requires-Dist: testtools>=2; extra == "test"
47
- Requires-Dist: where>=1.0.2; extra == "test"
48
- Requires-Dist: responses>=0.20.0; extra == "test"
49
- Requires-Dist: natsort; extra == "test"
50
- Provides-Extra: rar
51
- Requires-Dist: rarfile; extra == "rar"
52
33
  Provides-Extra: build
53
34
  Requires-Dist: pyinstaller<5,>=4.7; extra == "build"
54
35
  Requires-Dist: setuptools<70; extra == "build"
36
+ Provides-Extra: 7z
37
+ Requires-Dist: py7zr; extra == "7z"
38
+ Provides-Extra: rar
39
+ Requires-Dist: rarfile; extra == "rar"
55
40
  Provides-Extra: doc
56
41
  Requires-Dist: Jinja2>=3.0.0; extra == "doc"
57
42
  Requires-Dist: sphinx>=3.2.0; extra == "doc"
@@ -72,10 +57,25 @@ Requires-Dist: ipykernel>=6.15; extra == "doc"
72
57
  Requires-Dist: py-cpuinfo>=8.0.0; extra == "doc"
73
58
  Requires-Dist: click>=7.0.0; extra == "doc"
74
59
  Requires-Dist: pandas; extra == "doc"
60
+ Provides-Extra: test
61
+ Requires-Dist: coverage>=5; extra == "test"
62
+ Requires-Dist: mock>=4.0.3; extra == "test"
63
+ Requires-Dist: flake8~=3.5; extra == "test"
64
+ Requires-Dist: testfixtures>=6.18.5; extra == "test"
65
+ Requires-Dist: pytest~=6.2.5; extra == "test"
66
+ Requires-Dist: pytest-cov~=3.0.0; extra == "test"
67
+ Requires-Dist: pytest-mock~=3.6.1; extra == "test"
68
+ Requires-Dist: pytest-xdist>=1.34.0; extra == "test"
69
+ Requires-Dist: pytest-rerunfailures~=10.2; extra == "test"
70
+ Requires-Dist: pytest-timeout~=2.0.2; extra == "test"
71
+ Requires-Dist: pytest-benchmark~=3.4.0; extra == "test"
72
+ Requires-Dist: easydict<2,>=1.7; extra == "test"
73
+ Requires-Dist: testtools>=2; extra == "test"
74
+ Requires-Dist: where>=1.0.2; extra == "test"
75
+ Requires-Dist: responses>=0.20.0; extra == "test"
76
+ Requires-Dist: natsort; extra == "test"
75
77
  Provides-Extra: transfer
76
78
  Requires-Dist: hf-transfer; extra == "transfer"
77
- Provides-Extra: 7z
78
- Requires-Dist: py7zr; extra == "7z"
79
79
 
80
80
  # hfutils
81
81
 
@@ -7,7 +7,7 @@ Overview:
7
7
  __TITLE__ = 'hfutils'
8
8
 
9
9
  #: Version of this project.
10
- __VERSION__ = '0.4.2'
10
+ __VERSION__ = '0.4.3'
11
11
 
12
12
  #: Short description of the project, will be included in ``setup.py``.
13
13
  __DESCRIPTION__ = 'Useful utilities for huggingface'
@@ -6,6 +6,7 @@ from typing import Optional, Dict, Union, List
6
6
 
7
7
  from huggingface_hub.file_download import http_get, hf_hub_url
8
8
  from huggingface_hub.utils import build_hf_headers
9
+ from tqdm import tqdm
9
10
 
10
11
  from .hash import _f_sha256
11
12
  from ..operate.base import RepoTypeTyping, get_hf_client
@@ -438,23 +439,27 @@ def hf_tar_file_download(repo_id: str, archive_in_repo: str, file_in_archive: st
438
439
  idx_repo_type: Optional[RepoTypeTyping] = None, idx_revision: Optional[str] = None,
439
440
  proxies: Optional[Dict] = None, user_agent: Union[Dict, str, None] = None,
440
441
  headers: Optional[Dict[str, str]] = None, endpoint: Optional[str] = None,
441
- force_download: bool = False, hf_token: Optional[str] = None):
442
+ force_download: bool = False, silent: bool = False, hf_token: Optional[str] = None):
442
443
  """
443
- Download a file from a tar archive file in a Hugging Face repository.
444
+ Download a specific file from a tar archive stored in a Hugging Face repository.
444
445
 
445
- :param repo_id: The identifier of the repository.
446
+ This function allows you to extract and download a single file from a tar archive
447
+ that is hosted in a Hugging Face repository. It handles authentication, supports
448
+ different repository types, and can work with separate index repositories.
449
+
450
+ :param repo_id: The identifier of the repository containing the tar archive.
446
451
  :type repo_id: str
447
- :param archive_in_repo: The path to the archive file in the repository.
452
+ :param archive_in_repo: The path to the tar archive file within the repository.
448
453
  :type archive_in_repo: str
449
- :param file_in_archive: The path to the file inside the archive.
454
+ :param file_in_archive: The path to the desired file inside the tar archive.
450
455
  :type file_in_archive: str
451
- :param local_file: The path to save the downloaded file locally.
456
+ :param local_file: The local path where the downloaded file will be saved.
452
457
  :type local_file: str
453
- :param repo_type: The type of the Hugging Face repository.
458
+ :param repo_type: The type of the Hugging Face repository (e.g., 'dataset', 'model', 'space').
454
459
  :type repo_type: RepoTypeTyping, optional
455
- :param revision: The revision of the repository.
460
+ :param revision: The specific revision of the repository to use.
456
461
  :type revision: str, optional
457
- :param idx_repo_id: The identifier of the index repository.
462
+ :param idx_repo_id: The identifier of a separate index repository, if applicable.
458
463
  :type idx_repo_id: str, optional
459
464
  :param idx_file_in_repo: The path to the index file in the index repository.
460
465
  :type idx_file_in_repo: str, optional
@@ -462,48 +467,58 @@ def hf_tar_file_download(repo_id: str, archive_in_repo: str, file_in_archive: st
462
467
  :type idx_repo_type: RepoTypeTyping, optional
463
468
  :param idx_revision: The revision of the index repository.
464
469
  :type idx_revision: str, optional
465
- :param proxies: The proxies to be used for the HTTP request.
470
+ :param proxies: Proxy settings for the HTTP request.
466
471
  :type proxies: Dict, optional
467
- :param user_agent: The user agent for the HTTP request.
472
+ :param user_agent: Custom user agent for the HTTP request.
468
473
  :type user_agent: Union[Dict, str, None], optional
469
- :param headers: The additional headers for the HTTP request.
474
+ :param headers: Additional headers for the HTTP request.
470
475
  :type headers: Dict[str, str], optional
471
- :param endpoint: The Hugging Face API endpoint.
476
+ :param endpoint: Custom Hugging Face API endpoint.
472
477
  :type endpoint: str, optional
473
- :param force_download: Force download the file to destination path.
474
- Defualt to `False`, downloading will be skipped if the local file
475
- is fully matched with expected file.
478
+ :param force_download: If True, force re-download even if the file exists locally.
476
479
  :type force_download: bool
477
- :param hf_token: The Hugging Face access token.
480
+ :param silent: If True, suppress progress bar output.
481
+ :type silent: bool
482
+ :param hf_token: Hugging Face authentication token.
478
483
  :type hf_token: str, optional
479
- :raises FileNotFoundError: Raise this when file not exist in tar archive.
480
- :raises ArchiveStandaloneFileIncompleteDownload: Raise when download incomplete.
481
- :raises ArchiveStandaloneFileHashNotMatch: Raise when download hash not match.
482
484
 
483
- Examples::
484
- >>> from hfutils.index import hf_tar_file_download
485
- >>>
486
- >>> hf_tar_file_download(
487
- ... repo_id='deepghs/danbooru_newest',
488
- ... archive_in_repo='images/0000.tar',
489
- ... file_in_archive='7506000.jpg',
490
- ... local_file='test_example.jpg' # download destination
491
- ... )
485
+ :raises FileNotFoundError: If the specified file is not found in the tar archive.
486
+ :raises ArchiveStandaloneFileIncompleteDownload: If the download is incomplete.
487
+ :raises ArchiveStandaloneFileHashNotMatch: If the downloaded file's hash doesn't match the expected hash.
488
+
489
+ This function performs several steps:
490
+
491
+ 1. Retrieves the index of the tar archive.
492
+ 2. Checks if the desired file exists in the archive.
493
+ 3. Constructs the download URL and headers.
494
+ 4. Checks if the file already exists locally and matches the expected size and hash.
495
+ 5. Downloads the file if necessary, using byte range requests for efficiency.
496
+ 6. Verifies the downloaded file's size and hash.
497
+
498
+ Usage examples:
499
+ 1. Basic usage:
500
+ >>> hf_tar_file_download(
501
+ ... repo_id='deepghs/danbooru_newest',
502
+ ... archive_in_repo='images/0000.tar',
503
+ ... file_in_archive='7506000.jpg',
504
+ ... local_file='test_example.jpg' # download destination
505
+ ... )
506
+
507
+ 2. Using a separate index repository:
508
+ >>> hf_tar_file_download(
509
+ ... repo_id='nyanko7/danbooru2023',
510
+ ... idx_repo_id='deepghs/danbooru2023_index',
511
+ ... archive_in_repo='original/data-0000.tar',
512
+ ... file_in_archive='1000.png',
513
+ ... local_file='test_example.png' # download destination
514
+ ... )
492
515
 
493
516
  .. note::
494
517
 
495
- Besides, if the tar and index files are in different repositories, you can also use this function to
496
- download the given file by explicitly assigning the ``idx_repo_id`` argument.
497
-
498
- >>> from hfutils.index import hf_tar_file_download
499
- >>>
500
- >>> hf_tar_file_download(
501
- ... repo_id='nyanko7/danbooru2023',
502
- ... idx_repo_id='deepghs/danbooru2023_index',
503
- ... archive_in_repo='original/data-0000.tar',
504
- ... file_in_archive='1000.png',
505
- ... local_file='test_example.png' # download destination
506
- ... )
518
+ - This function is particularly useful for efficiently downloading single files from large tar archives
519
+ without having to download the entire archive.
520
+ - It supports authentication via the `hf_token` parameter, which is crucial for accessing private repositories.
521
+ - The function includes checks to avoid unnecessary downloads and to ensure the integrity of the downloaded file.
507
522
  """
508
523
  index = hf_tar_get_index(
509
524
  repo_id=repo_id,
@@ -547,7 +562,7 @@ def hf_tar_file_download(repo_id: str, archive_in_repo: str, file_in_archive: st
547
562
  if os.path.dirname(local_file):
548
563
  os.makedirs(os.path.dirname(local_file), exist_ok=True)
549
564
  try:
550
- with open(local_file, 'wb') as f:
565
+ with open(local_file, 'wb') as f, tqdm(disable=True) as empty_tqdm:
551
566
  if info['size'] > 0:
552
567
  http_get(
553
568
  url_to_download,
@@ -557,6 +572,7 @@ def hf_tar_file_download(repo_id: str, archive_in_repo: str, file_in_archive: st
557
572
  headers=headers,
558
573
  expected_size=info['size'],
559
574
  displayed_filename=file_in_archive,
575
+ _tqdm_bar=empty_tqdm if silent else None,
560
576
  )
561
577
 
562
578
  if os.path.getsize(local_file) != info['size']:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hfutils
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Useful utilities for huggingface
5
5
  Home-page: https://github.com/deepghs/hfutils
6
6
  Author: narugo1992
@@ -30,28 +30,13 @@ Requires-Dist: natsort
30
30
  Requires-Dist: urlobject
31
31
  Requires-Dist: fsspec>=2024
32
32
  Requires-Dist: random_user_agent
33
- Provides-Extra: test
34
- Requires-Dist: coverage>=5; extra == "test"
35
- Requires-Dist: mock>=4.0.3; extra == "test"
36
- Requires-Dist: flake8~=3.5; extra == "test"
37
- Requires-Dist: testfixtures>=6.18.5; extra == "test"
38
- Requires-Dist: pytest~=6.2.5; extra == "test"
39
- Requires-Dist: pytest-cov~=3.0.0; extra == "test"
40
- Requires-Dist: pytest-mock~=3.6.1; extra == "test"
41
- Requires-Dist: pytest-xdist>=1.34.0; extra == "test"
42
- Requires-Dist: pytest-rerunfailures~=10.2; extra == "test"
43
- Requires-Dist: pytest-timeout~=2.0.2; extra == "test"
44
- Requires-Dist: pytest-benchmark~=3.4.0; extra == "test"
45
- Requires-Dist: easydict<2,>=1.7; extra == "test"
46
- Requires-Dist: testtools>=2; extra == "test"
47
- Requires-Dist: where>=1.0.2; extra == "test"
48
- Requires-Dist: responses>=0.20.0; extra == "test"
49
- Requires-Dist: natsort; extra == "test"
50
- Provides-Extra: rar
51
- Requires-Dist: rarfile; extra == "rar"
52
33
  Provides-Extra: build
53
34
  Requires-Dist: pyinstaller<5,>=4.7; extra == "build"
54
35
  Requires-Dist: setuptools<70; extra == "build"
36
+ Provides-Extra: 7z
37
+ Requires-Dist: py7zr; extra == "7z"
38
+ Provides-Extra: rar
39
+ Requires-Dist: rarfile; extra == "rar"
55
40
  Provides-Extra: doc
56
41
  Requires-Dist: Jinja2>=3.0.0; extra == "doc"
57
42
  Requires-Dist: sphinx>=3.2.0; extra == "doc"
@@ -72,10 +57,25 @@ Requires-Dist: ipykernel>=6.15; extra == "doc"
72
57
  Requires-Dist: py-cpuinfo>=8.0.0; extra == "doc"
73
58
  Requires-Dist: click>=7.0.0; extra == "doc"
74
59
  Requires-Dist: pandas; extra == "doc"
60
+ Provides-Extra: test
61
+ Requires-Dist: coverage>=5; extra == "test"
62
+ Requires-Dist: mock>=4.0.3; extra == "test"
63
+ Requires-Dist: flake8~=3.5; extra == "test"
64
+ Requires-Dist: testfixtures>=6.18.5; extra == "test"
65
+ Requires-Dist: pytest~=6.2.5; extra == "test"
66
+ Requires-Dist: pytest-cov~=3.0.0; extra == "test"
67
+ Requires-Dist: pytest-mock~=3.6.1; extra == "test"
68
+ Requires-Dist: pytest-xdist>=1.34.0; extra == "test"
69
+ Requires-Dist: pytest-rerunfailures~=10.2; extra == "test"
70
+ Requires-Dist: pytest-timeout~=2.0.2; extra == "test"
71
+ Requires-Dist: pytest-benchmark~=3.4.0; extra == "test"
72
+ Requires-Dist: easydict<2,>=1.7; extra == "test"
73
+ Requires-Dist: testtools>=2; extra == "test"
74
+ Requires-Dist: where>=1.0.2; extra == "test"
75
+ Requires-Dist: responses>=0.20.0; extra == "test"
76
+ Requires-Dist: natsort; extra == "test"
75
77
  Provides-Extra: transfer
76
78
  Requires-Dist: hf-transfer; extra == "transfer"
77
- Provides-Extra: 7z
78
- Requires-Dist: py7zr; extra == "7z"
79
79
 
80
80
  # hfutils
81
81
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes