code: def find_outs_by_path(
      self, path, outs=None, recursive=False, strict=True
  ):
      # using `outs_graph` to ensure graph checks are run
      outs = outs or self.index.outs_graph
  
      abs_path = self.fs.abspath(path)
      fs_path = abs_path
  
      def func(out):
          def eq(one, two):
              return one == two
  
          match = eq if strict else out.fs.isin_or_eq
  
          if out.protocol == "local" and match(fs_path, out.fs_path):
              return True
  
          if recursive and out.fs.isin(out.fs_path, fs_path):
              return True
  
          return False
  
      matched = list(filter(func, outs))
      if not matched:
          raise OutputNotFoundError(path, self)
  
      return matched
  
imports: import os
  from collections import defaultdict
  from contextlib import contextmanager
  from functools import wraps
  from typing import TYPE_CHECKING, Callable, ContextManager, Iterable, Optional, Tuple, Union
  from dvc.exceptions import DvcException, NotDvcRepoError, OutputNotFoundError, RevCollectionError
  from dvc.ignore import DvcIgnoreFilter
  from dvc.log import logger
  from dvc.utils.objects import cached_property
label_desc: Use image node_id 29 for calling the Repo obj's underlying member method code with example usage: obj.find_outs_by_path(path, outs, recursive, strict) and returns: matched, False, unknown, True, True