class_docstr: Custom wrapper around a Repo instance
  
  It provides a few customized methods that also cache their return
  values. For all other method access the underlying repo instance
  is used.
  
  A repository is assumed to be static. Cache invalidation must
  be done manually, if that assumption does no longer hold.
code: def get_file_annexinfo(self, fpath):
      rpath = str(fpath.relative_to(self._unresolved_path))
      finfo = self._repo.get_content_annexinfo(
          paths=[rpath],
          # a simple `exists()` will not be enough (pointer files, etc...)
          eval_availability=True,
      )
      finfo = finfo.popitem()[1] if finfo else {}
      return finfo
  
imports: import logging
  import os.path
  from shutil import copyfile
  import sys
  from datalad.interface.base import Interface
  from datalad.interface.base import build_doc, eval_results
  from datalad.support.constraints import EnsureStr, EnsureNone
  from datalad.interface.common_opts import save_message_opt
  from datalad.support.param import Parameter
  from datalad.distribution.dataset import Dataset, require_dataset
  from datalad.support.annexrepo import AnnexRepo
  from datalad.support.exceptions import CapturedException
  from datalad.utils import ensure_list, get_dataset_root, Path
  from datalad.distribution.dataset import EnsureDataset, datasetmethod, resolve_path
  from functools import lru_cache
label_desc: Use image node_id 4 for calling the _CachedRepo obj's underlying member method code with example usage: obj.get_file_annexinfo(fpath) and returns: finfo