# ファイルのダウンロード

## 単一のファイルをダウンロード

### hf_hub_download[[huggingface_hub.hf_hub_download]]

#### huggingface_hub.hf_hub_download[[huggingface_hub.hf_hub_download]]

```python
huggingface_hub.hf_hub_download(repo_id: str, filename: str, subfolder: str | None = None, repo_type: str | None = None, revision: str | None = None, library_name: str | None = None, library_version: str | None = None, cache_dir: str | pathlib.Path | None = None, local_dir: str | pathlib.Path | None = None, user_agent: dict | str | None = None, force_download: bool = False, etag_timeout: float = 10, token: bool | str | None = None, local_files_only: bool = False, headers: dict[str, str] | None = None, endpoint: str | None = None, tqdm_class: type[tqdm.std.tqdm] | None = None, dry_run: bool = False)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/file_download.py#L855)

**パラメータ:**

repo_id (`str`) : ユーザー名または組織名とリポジトリ名を`/`で区切ったもの。

filename (`str`) : リポジトリ内のファイル名。

subfolder (`str`, *任意*) : モデルリポジトリ内のフォルダーに対応する任意の値。

repo_type (`str`, *任意*) : データセット、スペース、またはカーネルのリポジトリからダウンロードする場合は `"dataset"`、`"space"`、または `"kernel"` を設定し、モデルからダウンロードする場合は `None` または `"model"` を設定します。デフォルトは `None` です。

revision (`str`, *任意*) : 任意の Git リビジョン ID。ブランチ名、タグ、またはコミットハッシュを指定できます。

library_name (`str`, *任意*) : オブジェクトが対応するライブラリの名前。

library_version (`str`, *任意*) : ライブラリのバージョン。

cache_dir (`str`, `Path`, *省略可*) : キャッシュされたファイルを保存するフォルダへのパス。

local_dir (`str` または `Path`、*省略可能*) : 指定された場合、ダウンロードされたファイルはこのディレクトリ以下に配置されます。

user_agent (`dict`、`str`、*任意*) : 辞書または文字列形式のユーザーエージェント情報。

force_download (`bool`, *任意*, デフォルトは `False`) : ローカルキャッシュに既に存在する場合でも、ファイルをダウンロードするかどうか。

etag_timeout (`float`、*任意*、デフォルトは`10`) : ETagを取得する際、サーバーがデータを送信するのを何秒待ってから諦めるかを指定します。この値は`httpx2.request`に渡されます。

token (`str`, `bool`, *optional*) : ダウンロードに使用するトークンです。 - `True`の場合、HuggingFaceの設定フォルダからトークンを読み込みます。 - 文字列の場合、認証トークンとして使用されます。

local_files_only (`bool`、*任意*、デフォルトは`False`) : `True`の場合、ファイルのダウンロードを回避し、ローカルにキャッシュされたファイルが存在する場合はそのパスを返します。

headers (`dict`, *任意*) : リクエストに送信する追加のヘッダー。

endpoint (`str`, *任意*) : リクエストを送信する Hub エンドポイントです。デフォルトでは `HF_ENDPOINT` の値が使用されます。

tqdm_class (`tqdm`、*任意*) : 指定された場合、プログレスバーのデフォルトの動作を上書きします。渡される引数は、`tqdm.auto.tqdm` を継承するか、少なくともその動作を模倣している必要があります。デフォルトでは、`HF_HUB_DISABLE_PROGRESS_BARS` 環境変数を設定することで無効化できる、HF 独自のプログレスバーが使用されます。

dry_run (`bool`、*任意*、デフォルトは`False`) : `True`の場合、ファイルをダウンロードせずにドライランを実行します。ダウンロードされる内容に関する情報を含む[DryRunFileInfo](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.DryRunFileInfo)オブジェクトを返します。

**戻り値:** `str` または [DryRunFileInfo](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.DryRunFileInfo)

- `dry_run=False`の場合: ファイルのローカルパス、またはネットワークがオフの場合はディスクにキャッシュされたファイルの最終バージョン。
- `dry_run=True`の場合: ダウンロード情報を含む[DryRunFileInfo](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.DryRunFileInfo)オブジェクト。

**例外:** [RepositoryNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RepositoryNotFoundError) または [RevisionNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RevisionNotFoundError) または `~utils.RemoteEntryNotFoundError` または [LocalEntryNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.LocalEntryNotFoundError) または ``EnvironmentError`` または ``OSError`` または ``ValueError``

- [RepositoryNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RepositoryNotFoundError) -- ダウンロード元のリポジトリが見つからない場合。存在しないか、`private`に設定されておりアクセス権限がない可能性があります。
- [RevisionNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RevisionNotFoundError) -- ダウンロード元のリビジョンが見つからない場合。
- `~utils.RemoteEntryNotFoundError` -- ダウンロード対象のファイルが見つからない場合。
- [LocalEntryNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.LocalEntryNotFoundError) -- ネットワークが無効または利用不可で、ファイルがキャッシュに見つからない場合。
- [`EnvironmentError`](https://docs.python.org/3/library/exceptions.html#EnvironmentError) -- `token=True` であるが、トークンが見つからない場合。
- [`OSError`](https://docs.python.org/3/library/exceptions.html#OSError) -- ETag を決定できない場合。
- [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) -- パラメータの値が無効な場合。

ローカルキャッシュに存在しない場合、指定されたファイルをダウンロードします。

新しいキャッシュファイルのレイアウトは以下のようになります:
- cache ディレクトリには、repo_id ごとに1つのサブフォルダが含まれます（リポジトリタイプで名前空間が区切られています）。
- 各リポジトリフォルダ内:
  - refs は、最新既知の revision => commit_hash のペアのリストです
  - blobsには、実際のファイルのブロブが含まれています（LFSファイルかどうかによって、git-shaまたはsha256で識別されます）。
  - snapshotsにはコミットごとに1つのサブフォルダが含まれており、各「commit」には、その特定のコミット時点で解決されたファイルのサブセットが含まれます。各ファイル名は、その特定のコミット時点のblobへのシンボリックリンクです。

```
[  96]  .
└── [ 160]  models--julien-c--EsperBERTo-small
    ├── [ 160]  blobs
    │   ├── [321M]  403450e234d65943a7dcf7e05a771ce3c92faa84dd07db4ac20f592037a1e4bd
    │   ├── [ 398]  7cb18dc9bafbfcf74629a4b760af1b160957a83e
    │   └── [1.4K]  d7edf6bd2a681fb0175f7735299831ee1b22b812
    ├── [  96]  refs
    │   └── [  40]  main
    └── [ 128]  snapshots
        ├── [ 128]  2439f60ef33a0d46d85da5001d52aeda5b00ce9f
        │   ├── [  52]  README.md -> ../../blobs/d7edf6bd2a681fb0175f7735299831ee1b22b812
        │   └── [  76]  pytorch_model.bin -> ../../blobs/403450e234d65943a7dcf7e05a771ce3c92faa84dd07db4ac20f592037a1e4bd
        └── [ 128]  bbc77c8132af1cc5cf678da3f1ddf2de43606d48
            ├── [  52]  README.md -> ../../blobs/7cb18dc9bafbfcf74629a4b760af1b160957a83e
            └── [  76]  pytorch_model.bin -> ../../blobs/403450e234d65943a7dcf7e05a771ce3c92faa84dd07db4ac20f592037a1e4bd
```

`local_dir` が指定されている場合、リポジトリのファイル構造がこの場所に複製されます。このオプションを使用すると、`cache_dir` は使用されず、`local_dir` のルートに `.cache/huggingface/` フォルダが作成され、ダウンロードされたファイルに関連する一部のメタデータが保存されます。この仕組みはメインのキャッシュシステムほど堅牢ではありませんが、リポジトリの最新バージョンを定期的に取得する用途に最適化されています。

### hf_hub_url[[huggingface_hub.hf_hub_url]]

#### huggingface_hub.hf_hub_url[[huggingface_hub.hf_hub_url]]

```python
huggingface_hub.hf_hub_url(repo_id: str, filename: str, subfolder: str | None = None, repo_type: str | None = None, revision: str | None = None, endpoint: str | None = None)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/file_download.py#L210)

**パラメータ:**

repo_id (`str`) : `/`で区切られた名前空間（ユーザーまたは組織）名とリポジトリ名。

filename (`str`) : リポジトリ内のファイル名。

subfolder (`str`, *任意*) : リポジトリ内のフォルダーに対応する任意の値。

repo_type (`str`, *任意*) : データセット、スペース、またはカーネルのリポジトリからダウンロードする場合は `"dataset"`、`"space"`、または `"kernel"` を設定し、モデルからダウンロードする場合は `None` または `"model"` を設定します。デフォルトは `None` です。

revision (`str`, *任意*) : 任意の Git リビジョン ID。ブランチ名、タグ、またはコミットハッシュを指定できます。

endpoint (`str`, *任意*) : リクエストを送信する Hub エンドポイントです。デフォルトでは `HF_ENDPOINT` の値が使用されます。

与えられた情報からファイルのURLを構築します。

解決されたアドレスは、huggingface.coでホストされているURLであるか、数MBを超える大きなファイル用のCloudfront（コンテンツ配信ネットワーク、CDN）へのリンクのいずれかです。

例:

```python
>>> from huggingface_hub import hf_hub_url

>>> hf_hub_url(
...     repo_id="julien-c/EsperBERTo-small", filename="pytorch_model.bin"
... )
'https://huggingface.co/julien-c/EsperBERTo-small/resolve/main/pytorch_model.bin'
```

> [!TIP]
> 注:
>
> Cloudfrontは世界中にレプリカが展開されているため、エンドユーザーからのダウンロード速度が大幅に向上します（また、帯域幅コストの削減にもつながります）。
>
> Cloudfront はデフォルトでファイルを積極的にキャッシュします（デフォルトの TTL は 24 時間）が、huggingface.co では git ベースのバージョン管理システムを実装しているため、ここでは問題になりません。つまり、S3/Cloudfront 上のファイルはコンテンツアドレス方式（ファイル名がそのハッシュ値である方式）で保存されており、コンテンツアドレス方式のファイル名を使用することで、キャッシュが古くなることは決してありません。
>
> このライブラリにおけるクライアントサイドのキャッシュについて、キャッシュはオブジェクトのエンティティタグ（`ETag`）に基づいて行われます。`ETag`は、リソースの特定のバージョンを識別する識別子です [1]_。オブジェクトの`ETag`は、gitに保存されている場合はそのgit-sha1、git-lfsに保存されている場合はそのsha256です。

参考文献:

-  https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag

## リポジトリのスナップショットをダウンロード[[huggingface_hub.snapshot_download]]

#### huggingface_hub.snapshot_download[[huggingface_hub.snapshot_download]]

```python
huggingface_hub.snapshot_download(repo_id: str, repo_type: str | None = None, revision: str | None = None, cache_dir: str | pathlib.Path | None = None, local_dir: str | pathlib.Path | None = None, library_name: str | None = None, library_version: str | None = None, user_agent: dict | str | None = None, etag_timeout: float = 10, force_download: bool = False, token: bool | str | None = None, local_files_only: bool = False, allow_patterns: list[str] | str | None = None, ignore_patterns: list[str] | str | None = None, max_workers: int = 8, tqdm_class: type[tqdm.asyncio.tqdm_asyncio] | None = None, headers: dict[str, str] | None = None, endpoint: str | None = None, dry_run: bool = False)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/_snapshot_download.py#L121)

**パラメータ:**

repo_id (`str`) : ユーザー名または組織名とリポジトリ名を`/`で区切ったもの。

repo_type (`str`, *任意*) : データセット、スペース、またはカーネルのリポジトリからダウンロードする場合は `"dataset"`、`"space"`、または `"kernel"` を設定し、モデルからダウンロードする場合は `None` または `"model"` を設定します。デフォルトは `None` です。

revision (`str`, *任意*) : 任意の Git リビジョン ID。ブランチ名、タグ、またはコミットハッシュを指定できます。

cache_dir (`str`, `Path`, *省略可*) : キャッシュされたファイルを保存するフォルダへのパス。

local_dir (`str` または `Path`、*省略可能*) : 指定された場合、ダウンロードされたファイルはこのディレクトリ以下に配置されます。

library_name (`str`, *任意*) : オブジェクトが対応するライブラリの名前。

library_version (`str`, *任意*) : ライブラリのバージョン。

user_agent (`str`、`dict`、*任意*) : 辞書または文字列形式のユーザーエージェント情報。

etag_timeout (`float`、*任意*、デフォルトは`10`) : ETagを取得する際、サーバーがデータを送信するのを何秒待ってから諦めるかを指定します。この値は`httpx2.request`に渡されます。

force_download (`bool`, *任意*, デフォルトは `False`) : ローカルキャッシュに既に存在する場合でも、ファイルをダウンロードするかどうか。

token (`str`, `bool`, *optional*) : ダウンロードに使用するトークンです。 - `True`の場合、HuggingFaceの設定フォルダからトークンを読み込みます。 - 文字列の場合、認証トークンとして使用されます。

headers (`dict`, *任意*) : リクエストに含める追加のヘッダー。これらのヘッダーは他のヘッダーよりも優先されます。

endpoint (`str`, *任意*) : リクエストを送信する Hub エンドポイントです。デフォルトでは `HF_ENDPOINT` の値が使用されます。

local_files_only (`bool`、*任意*、デフォルトは`False`) : `True`の場合、`cache_dir`または`local_dir`に存在しない場合でも、ファイルをダウンロードしません。

allow_patterns (`list[str]` または `str`、*省略可能*) : 指定された場合、少なくとも1つのパターンに一致するファイルのみがダウンロードされます。

ignore_patterns (`list[str]` または `str`、*省略可能*) : 指定された場合、いずれかのパターンに一致するファイルはダウンロードされません。

max_workers (`int`, *optional*) : ファイルのダウンロードに使用する同時実行スレッド数（1スレッド = 1ファイルのダウンロード）です。デフォルト値は8です。

tqdm_class (`tqdm`, *任意*) : 指定すると、プログレスバーのデフォルトの動作を上書きします。渡される引数は、`tqdm.auto.tqdm` を継承しているか、少なくともその動作を模倣している必要があります。なお、`tqdm_class` は個々のダウンロードには渡されません。デフォルトでは、`HF_HUB_DISABLE_PROGRESS_BARS` 環境変数を設定することで無効化できる、HF 独自のプログレスバーが使用されます。

dry_run (`bool`、*任意*、デフォルトは`False`) : `True`の場合、ファイルをダウンロードせずにドライランを実行します。ダウンロードされる内容に関する情報を含む[DryRunFileInfo](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.DryRunFileInfo)オブジェクトのリストを返します。

**戻り値:** `str` または [DryRunFileInfo](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.DryRunFileInfo) のリスト

- `dry_run=False`の場合: ローカルスナップショットのパス。
- `dry_run=True`の場合: ダウンロード情報を含む[DryRunFileInfo](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.DryRunFileInfo)オブジェクトのリスト。

**例外:** [RepositoryNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RepositoryNotFoundError) または [RevisionNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RevisionNotFoundError) または [IncompleteSnapshotError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.IncompleteSnapshotError) または ``EnvironmentError`` または ``OSError`` または ``ValueError``

- [RepositoryNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RepositoryNotFoundError) -- ダウンロード元のリポジトリが見つからない場合。存在しないか、`private`に設定されておりアクセス権限がない可能性があります。
- [RevisionNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.RevisionNotFoundError) -- ダウンロード元のリビジョンが見つからない場合。
- [IncompleteSnapshotError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.IncompleteSnapshotError) -- Hub に接続できない場合（オフライン、接続の問題、または `local_files_only=True`）で、キャッシュされたスナップショットに要求されたファイルの一部が欠けている場合に発生します。
- [`EnvironmentError`](https://docs.python.org/3/library/exceptions.html#EnvironmentError) -- `token=True`が設定されている場合で、トークンが見つからない場合に発生します。
- [`OSError`](https://docs.python.org/3/library/exceptions.html#OSError) -- ETag を決定できない場合。
- [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) -- パラメータの値が無効な場合。

リポジトリのファイルをダウンロードします。

指定されたリビジョンのリポジトリのファイルのスナップショット全体をダウンロードします。事前に_どのファイルが必要か_がわからない場合、リポジトリのすべてのファイルが必要になる場合に便利です。すべてのファイルは、そのフォルダに対するパスとファイル名を保持するために、フォルダ内にネストされます。`allow_patterns`と`ignore_patterns`を使用して、ダウンロードするファイルをフィルタリングすることもできます。

`local_dir` が指定されている場合、リポジトリのファイル構造がこの場所に複製されます。このオプションを使用すると、`cache_dir` は使用されず、`local_dir` のルートに `.cache/huggingface/` フォルダが作成され、ダウンロードされたファイルに関連する一部のメタデータが保存されます。この仕組みはメインのキャッシュシステムほど堅牢ではありませんが、リポジトリの最新バージョンを定期的に取得する用途に最適化されています。

代替案としてリポジトリをクローンする方法がありますが、これにはgitとgit-lfsがインストールされ、正しく設定されている必要があります。また、gitを使用してリポジトリをクローンする際、ダウンロードするファイルをフィルタリングすることはできません。

## キャッシュされたリポジトリツリーを読み取る[[huggingface_hub.get_cached_repo_tree]]

#### huggingface_hub.get_cached_repo_tree[[huggingface_hub.get_cached_repo_tree]]

```python
huggingface_hub.get_cached_repo_tree(repo_id: str, repo_type: str | None = None, revision: str | None = None, cache_dir: str | pathlib.Path | None = None, local_dir: str | pathlib.Path | None = None)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/_snapshot_download.py#L603)

**パラメータ:**

repo_id (`str`) : ユーザー名または組織名とリポジトリ名を`/`で区切ったもの。

repo_type (`str`, *任意*) : データセット、スペース、またはカーネルのリポジトリから一覧を取得する場合は `"dataset"`、`"space"`、または `"kernel"` を設定し、モデルから一覧を取得する場合は `None` または `"model"` を設定します。デフォルトは `None` です。

revision (`str`, *任意*) : 任意の Git リビジョン ID。ブランチ名、タグ、またはコミットハッシュを指定できます。デフォルトでは、デフォルトブランチが使用されます。ブランチ名やタグ名は、ローカルキャッシュ (`refs/`) を使用してコミットハッシュに解決されます。

cache_dir (`str`, `Path`, *任意*) : キャッシュされたファイルを保存するフォルダへのパス。デフォルトでは`HF_HUB_CACHE`の値が使用されます。

local_dir (`str` または `Path`、*省略可能*) : 指定された場合、メインのキャッシュではなく、`local_dir` のダウンロードによってキャッシュされたツリー一覧（`local_dir/.cache/huggingface/` から）を読み込みます。ブランチ/タグのリビジョンは、メインのキャッシュ（`cache_dir`）を使用してコミットハッシュに解決されます。

**戻り値:** `list[RepoFile]`

このリビジョン用にキャッシュされた[RepoFile](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.RepoFile)オブジェクトのリスト。

**例外:** [CachedRepoTreeNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.CachedRepoTreeNotFoundError)

- [CachedRepoTreeNotFoundError](/docs/huggingface_hub/v2.4.0/ja/package_reference/utilities#huggingface_hub.errors.CachedRepoTreeNotFoundError) -- 要求されたリビジョンのツリー一覧がキャッシュされていない場合（例：そのリビジョンでリポジトリが一度もダウンロードされていない場合）。

指定されたリビジョンのリポジトリのキャッシュされたツリー一覧を、ネットワーク呼び出しなしで返します。

ツリー一覧は、リポジトリの特定のコミットにおけるファイルのセット（ダウンロードメタデータ付き）です。[snapshot_download()](/docs/huggingface_hub/v2.4.0/ja/package_reference/file_download#huggingface_hub.snapshot_download) の実行時にディスク上に生成される副次的な結果として保存されます（`trees/<commit_hash>.json` キャッシュファイル参照）。以降のダウンロード時にネットワーク呼び出しをスキップするために使用されます。この関数は、そのキャッシュに直接アクセスできるようにします。

Hub上のリポジトリの現在のツリー一覧が必要な場合は、代わりに[list_repo_tree()](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.HfApi.list_repo_tree)を使用してください。

例:
```py
>>> from huggingface_hub import get_cached_repo_tree
>>> files = get_cached_repo_tree("openai-community/gpt2")
>>> [f.path for f in files]
['.gitattributes', 'config.json', 'model.safetensors', ...]
```

## リビジョンを解決

ブランチ名またはタグ名を一度だけコミットハッシュに解決し、その結果を渡すことで、すべてのダウンロードを同じコミットに固定します。[HfApi.resolve_revision()](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.HfApi.resolve_revision)および[キャッシュシステムのガイド](../guides/manage-cache#pin-a-revision-advanced)を参照してください。

### ResolvedRevision[[huggingface_hub.ResolvedRevision]]

#### huggingface_hub.ResolvedRevision[[huggingface_hub.ResolvedRevision]]

```python
huggingface_hub.ResolvedRevision(resolved: str, initial: str | None = None, repo_id: str | None = None, repo_type: str | None = None)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/_revision.py#L4)

**パラメータ:**

initial (`str` または `None`) : ユーザーが最初に要求したリビジョン。`None` の場合、文字列の値はデフォルトで `"main"` になります。

resolved (`str`) : `initial` が解決されるコミットハッシュ。

すでにコミットハッシュに解決済みのgitリビジョン。

`ResolvedRevision` は `str` のサブクラスであるため、`revision` 引数を受け取る `huggingface_hub` の任意のメソッドに渡すことができます。その文字列値は、ユーザーが最初に要求したリビジョン（例: `"main"`、`"refs/pr/4"`）であり、URL やエラーメッセージの可読性を保ちます。一方、`.resolved` には、それが指すコミットハッシュが保持されます。

インスタンスは、`revision` -> `commit hash` のマッピングをローカルキャッシュ（`refs/` フォルダ）にキャッシュする [HfApi.resolve_revision()](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.HfApi.resolve_revision) によって構築されます。

コミットハッシュは、解決されたリポジトリに対してのみ意味を持つため、インスタンスはそのリポジトリも記憶します。別のリポジトリに対して再解決することはエラーではありません。最初に要求されたリビジョンが再度解決されます（[HfApi.resolve_revision()](/docs/huggingface_hub/v2.4.0/ja/package_reference/hf_api#huggingface_hub.HfApi.resolve_revision)を参照）。

例:
```python
>>> from huggingface_hub import resolve_revision
>>> revision = resolve_revision("openai-community/gpt2")
>>> revision
ResolvedRevision(initial=None, resolved='607a30d783dfa663caf39e06633721c8d4cfcd7e')
>>> revision == "main"  # it's a string
True
>>> revision.resolved
'607a30d783dfa663caf39e06633721c8d4cfcd7e'
```

## ファイルのメタデータを取得する

### get_hf_file_metadata[[huggingface_hub.get_hf_file_metadata]]

#### huggingface_hub.get_hf_file_metadata[[huggingface_hub.get_hf_file_metadata]]

```python
huggingface_hub.get_hf_file_metadata(url: str, token: bool | str | None = None, timeout: float | None = 10, library_name: str | None = None, library_version: str | None = None, user_agent: dict | str | None = None, headers: dict[str, str] | None = None, endpoint: str | None = None, retry_on_errors: bool = False)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/file_download.py#L1617)

**パラメータ:**

url (`str`) : ファイルのURL。例えば、[hf_hub_url()](/docs/huggingface_hub/v2.4.0/ja/package_reference/file_download#huggingface_hub.hf_hub_url)によって返されるもの。

token (`str` または `bool`、*省略可能*) : ダウンロードに使用するトークンです。 - `True` の場合、HuggingFace の設定フォルダからトークンを読み込みます。 - `False` または `None` の場合、トークンは提供されません。 - 文字列の場合、認証トークンとして使用されます。

timeout (`float`、*任意*、デフォルトは 10) : サーバーがメタデータを送信するのを待ってから諦めるまでの秒数。

library_name (`str`, *任意*) : オブジェクトが対応するライブラリの名前。

library_version (`str`, *任意*) : ライブラリのバージョン。

user_agent (`dict`、`str`、*任意*) : 辞書または文字列形式のユーザーエージェント情報。

headers (`dict`, *任意*) : リクエストに送信する追加のヘッダー。

endpoint (`str`, *任意*) : Hub のエンドポイント。デフォルトは です。

retry_on_errors (`bool`、*任意*、デフォルトは`False`) : エラー（429、5xx、タイムアウト、ネットワークエラー）が発生した際にリトライを行うかどうか。False の場合、ローカルキャッシュへの迅速なフォールバックのため、リトライは行われません。

**戻り値:**

位置情報、etag、サイズ、commit_hashなどのメタデータを含む[HfFileMetadata](/docs/huggingface_hub/v2.4.0/ja/package_reference/file_download#huggingface_hub.HfFileMetadata)オブジェクト。

指定されたURLの、Hub上でバージョン管理されているファイルのメタデータを取得します。

### HfFileMetadata[[huggingface_hub.HfFileMetadata]]

#### huggingface_hub.HfFileMetadata[[huggingface_hub.HfFileMetadata]]

```python
huggingface_hub.HfFileMetadata(commit_hash: str | None, etag: str | None, location: str, size: int | None, xet_file_data: huggingface_hub.utils._xet.XetFileData | None)
```

[ソース](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/file_download.py#L155)

**パラメータ:**

commit_hash (`str`, *任意*) : ファイルに関連する commit_hash。

etag (`str`, *任意*) : サーバー上のファイルのEtag。

location (`str`) : ファイルをダウンロードする場所。Hub の URL または CDN のいずれかです。

size (`size`) : ファイルのサイズ。LFSファイルの場合、ポインタではなく実際のLFSファイルのサイズが含まれます。

xet_file_data (`XetFileData`, *任意*) : ファイルの Xet 情報です。ファイルが Xet ストレージで保存されている場合のみ設定されます。

Hubでバージョン管理されているファイルに関する情報を含むデータ構造。

URLに基づいて[get_hf_file_metadata()](/docs/huggingface_hub/v2.4.0/ja/package_reference/file_download#huggingface_hub.get_hf_file_metadata)によって返されます。

## キャッシュ

上記に表示されているメソッドは、ファイルの再ダウンロードを防ぐためのキャッシュシステムと連携するように設計されています。このキャッシュシステムは、v0.8.0 で更新され、Hub に依存するライブラリ全体で共有される中央キャッシュシステムとなりました。

HFでのキャッシュの詳細な説明については、[キャッシュシステムのガイド](../guides/manage-cache)をお読みください。

