docstr: yield (parent, exclude_spec) from .bentoignore file of a given path
docstr_tok: ["yield","(","parent",",","exclude_spec",")","from",".bentoignore","file","of","a","given","path"]
code: def from_path(
      self, path: str
  ) -> t.Generator[t.Tuple[str, PathSpec], None, None]:
      """
      yield (parent, exclude_spec) from .bentoignore file of a given path
      """
      fs_ = fs.open_fs(path)
      for file in fs_.walk.files(filter=[".bentoignore"]):
          dir_path = "".join(fs.path.parts(file)[:-1])
          yield dir_path, PathSpec.from_lines(
              "gitwildmatch", fs_.open(file)
          )
  
imports: from __future__ import annotations
  import logging
  import os
  import re
  import subprocess
  import sys
  import typing
  from shlex import quote
  from sys import version_info
  import attr
  import fs
  import fs.copy
  import psutil
  import yaml
  from pathspec import PathSpec
  from ...exceptions import BentoMLException
  from ...exceptions import InvalidArgument
  from ..configuration import BENTOML_VERSION
  from ..configuration import clean_bentoml_version
  from ..configuration import get_quiet_mode
  from ..container import generate_containerfile
  from ..container.frontend.dockerfile import ALLOWED_CUDA_VERSION_ARGS
  from ..container.frontend.dockerfile import CONTAINER_SUPPORTED_DISTROS
  from ..container.frontend.dockerfile import SUPPORTED_CUDA_VERSIONS
  from ..container.frontend.dockerfile import DistroSpec
  from ..container.frontend.dockerfile import get_supported_spec
  from ..container.generate import BENTO_PATH
  from ..utils import bentoml_cattr
  from ..utils import copy_file_to_fs_folder
  from ..utils import resolve_user_filepath
  from ..utils.dotenv import parse_dotenv
  from .build_dev_bentoml_whl import build_bentoml_editable_wheel
label_desc: Use image node_id 2 for calling the BentoPathSpec obj's underlying member method code with example usage: obj.from_path(path) without return types