code: def _entry_from_headers(
      self, headers: "requests.structures.CaseInsensitiveDict"
  ) -> Tuple[Optional[ETag], Optional[int], Dict[str, str]]:
      response_headers = {k.lower(): v for k, v in headers.items()}
      size = None
      if response_headers.get("content-length", None):
          size = int(response_headers["content-length"])
  
      digest = response_headers.get("etag", None)
      extra = {}
      if digest:
          extra["etag"] = digest
      if digest and digest[:1] == '"' and digest[-1:] == '"':
          digest = digest[
              1:-1
          ]  # trim leading and trailing quotes around etag
      return digest, size, extra
  
file_path: wandb/wandb/sdk/artifacts/storage_handlers/http_handler.py
imports: import os
  from typing import TYPE_CHECKING, Dict, Optional, Sequence, Tuple, Union
  from urllib.parse import ParseResult
  from wandb.sdk.artifacts.artifact_file_cache import get_artifact_file_cache
  from wandb.sdk.artifacts.artifact_manifest_entry import ArtifactManifestEntry
  from wandb.sdk.artifacts.storage_handler import StorageHandler
  from wandb.sdk.internal.thread_local_settings import _thread_local_api_settings
  from wandb.sdk.lib.hashutil import ETag
  from wandb.sdk.lib.paths import FilePathStr, StrPath, URIStr
label_desc: Use image node_id 5 for calling the HTTPHandler obj's underlying member method code with example usage: obj._entry_from_headers(headers) and returns: digest,  size,  extra