class_docstr: Class for interacting with a GitHub repository.
  
  .. note::
  
      To interact with private GitHub repositories that you have access to,
      provide your GitHub personal access token by setting the
      ``GITHUB_TOKEN`` environment variable.
  
  Args:
      repo: the GitHub repository or identifier, which can be:
  
          -   a GitHub URL like ``https://github.com/<user>/<repo>``
          -   a GitHub ref like
              ``https://github.com/<user>/<repo>/tree/<branch>`` or
              ``https://github.com/<user>/<repo>/commit/<commit>``
          -   a GitHub ref string like ``<user>/<repo>[/<ref>]``
docstr: Downloads the repository to the specified root directory.
  
  Args:
      outdir: the output directory
docstr_tok: ["Downloads","the","repository","to","the","specified","root","directory",".","Args",":","outdir",":","the","output","directory"]
code: def download(self, outdir):
      """Downloads the repository to the specified root directory.
  
      Args:
          outdir: the output directory
      """
      zip_path = os.path.join(outdir, "download.zip")
      zip_url = f"https://api.github.com/repos/{self.user}/{self.repo}/zipball"
      if self.ref:
          zip_url += "/" + self.ref
  
      web_session = etaw.WebSession()
      web_session.sess = self._get_session()
      web_session.write(zip_path, zip_url)
  
      etau.extract_zip(zip_path, delete_zip=True)
  
imports: import logging
  import os
  import re
  import requests
  import eta.core.utils
  import eta.core.web
label_desc: Use image node_id 11 for calling the GitHubRepository obj's underlying member method code with example usage: obj.download(outdir) without return types