class_docstr: Base Repo Manager class to create, initialize, download repos.
  
  Args:
      author (`str`):
          The author of the repo.
      repo (`str`):
          The name of the repo.
      root (`str`):
          The root url of the repo.
class_docstr_tok: ["Base","Repo","Manager","class","to","create",",","initialize",",","download","repos",".","Args",":","author","(","`","str","`",")",":","The","author","of","the","repo",".","repo","(","`","str","`",")",":","The","name","of","the","repo",".","root","(","`","str","`",")",":","The","root","url","of","the","repo","."]
docstr: Download the .gitattributes file from the specified repo in order to figure out
  which files are being tracked by git-lfs.
  
  Lines that deal with git-lfs take on the following format:
  
  ```
      *.extension   filter=lfs  merge=lfs ...
  ```
  
  Args:
      tag (`str`):
          The tag name.
  
  Returns:
      (`List[str]`)
          The list of file extentions tracked by git-lfs.
docstr_tok: ["Download","the",".gitattributes","file","from","the","specified","repo","in","order","to","figure","out","which","files","are","being","tracked","by","git-lfs",".","Lines","that","deal","with","git-lfs","take","on","the","following","format",":","``","`","*",".extension","filter=lfs","merge=lfs","...","``","`","Args",":","tag","(","`","str","`",")",":","The","tag","name",".","Returns",":","(","`","List","[","str","]","`",")","The","list","of","file","extentions","tracked","by","git-lfs","."]
code: def obtain_lfs_extensions(self, tag: str) -> List[str]:
      """
      Download the .gitattributes file from the specified repo in order to figure out
      which files are being tracked by git-lfs.
  
      Lines that deal with git-lfs take on the following format:
  
      ```
          *.extension   filter=lfs  merge=lfs ...
      ```
  
      Args:
          tag (`str`):
              The tag name.
  
      Returns:
          (`List[str]`)
              The list of file extentions tracked by git-lfs.
      """
      res = self.hub_utils.get_file(".gitattributes", tag)
      lfs_files = []
      if res.status_code == 200:
          # Using temporary file in order to avoid double download, cleaner to not split up downloads everywhere.
          with TemporaryFile() as temp_file:
              temp_file.write(res.content)
              temp_file.seek(0)
  
              for line in temp_file:
                  parts = line.split()
                  # We only care if lfs filter is present.
                  if b"filter=lfs" in parts[1:]:
                      # Removing the `*` in `*.ext`, need work if filtering specific files.
                      lfs_files.append(parts[0].decode("utf-8")[1:])
      return lfs_files
  
imports: import re
  import subprocess
  import sys
  import time
  from typing import Tuple, List, Union
  from shutil import rmtree
  from pathlib import Path
  from requests.exceptions import HTTPError
  from tqdm import tqdm
  from tempfile import TemporaryFile
  from concurrent.futures import ThreadPoolExecutor
  from towhee.utils.hub_utils import HubUtils
  from towhee.utils.log import engine_log
label_desc: Use image node_id 6 for calling the RepoManager obj's underlying member method code with example usage: obj.obtain_lfs_extensions(tag) and returns: lfs_files