prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Streamlit fails to start without Git executable
  # Summary
  
  Streamlit version `0.69.1` fails to start when run inside a Docker container that doesn't have Git installed.
  
  # Steps to reproduce
  
  1. Create a `Dockerfile` with the following contents:
  ```dockerfile
  FROM python:3.8-slim
  RUN pip install streamlit
  CMD ["streamlit", "hello"]
  ```
  2. Build the image:
  ```bash
  docker build -t demo .
  ```
  3. Run the app:
  ```bash
  docker run -it --rm demo
  ```
  
  ## Expected behavior:
  
  Streamlit starts without issues.
  
  ## Actual behavior:
  
  Streamlit fails to start and displays the following error message:
  
  ```bash
  Traceback (most recent call last):
    File "/usr/local/lib/python3.8/site-packages/git/__init__.py", line 83, in <module>
      refresh()
    File "/usr/local/lib/python3.8/site-packages/git/__init__.py", line 73, in refresh
      if not Git.refresh(path=path):
    File "/usr/local/lib/python3.8/site-packages/git/cmd.py", line 278, in refresh
      raise ImportError(err)
  ImportError: Bad git executable.
  The git executable must be specified in one of the following ways:
      - be included in your $PATH
      - be set via $GIT_PYTHON_GIT_EXECUTABLE
      - explicitly set via git.refresh()
  
  All git commands will error until this is rectified.
  
  This initial warning can be silenced or aggravated in the future by setting the
  $GIT_PYTHON_REFRESH environment variable. Use one of the following values:
      - quiet|q|silence|s|none|n|0: for no warning or exception
      - warn|w|warning|1: for a printed warning
      - error|e|raise|r|2: for a raised exception
  
  Example:
      export GIT_PYTHON_REFRESH=quiet
  ```
  
  ## Is this a regression?
  
  **yes** (worked up until at least version `0.67.1`)
  
  # Debug info
  
  - Streamlit version: `0.69.1`
  - Python version: `3.8.6`
  - Using Conda? PipEnv? PyEnv? Pex? **NO**
  - OS version: `4.19.76-linuxkit`
  
  # Additional information
  
  This bug can be worked around by setting `GIT_PYTHON_REFRESH=quiet` environment variable inside the Docker image.
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `lib/setup.py`
  Content:
  ```
  1 import os
  2 import platform
  3 import setuptools
  4 import subprocess
  5 import sys
  6 
  7 from pipenv.project import Project
  8 from pipenv.utils import convert_deps_to_pip
  9 from setuptools.command.install import install
  10 
  11 VERSION = "0.69.1"  # PEP-440
  12 
  13 NAME = "streamlit"
  14 
  15 DESCRIPTION = "The fastest way to build data apps in Python"
  16 
  17 LONG_DESCRIPTION = (
  18     "Streamlit's open-source app framework is the easiest way "
  19     "for data scientists and machine learning engineers to "
  20     "create beautiful, performant apps in only a few hours! "
  21     "All in pure Python. All for free."
  22 )
  23 
  24 pipfile = Project(chdir=False).parsed_pipfile
  25 
  26 packages = pipfile["packages"].copy()
  27 requirements = convert_deps_to_pip(packages, r=False)
  28 
  29 # Check whether xcode tools are available before making watchdog a
  30 # dependency (only if the current system is a Mac).
  31 if platform.system() == "Darwin":
  32     has_xcode = subprocess.call(["xcode-select", "--version"], shell=False) == 0
  33     has_gcc = subprocess.call(["gcc", "--version"], shell=False) == 0
  34 
  35     if not (has_xcode and has_gcc):
  36         try:
  37             requirements.remove("watchdog")
  38         except ValueError:
  39             pass
  40 
  41 
  42 class VerifyVersionCommand(install):
  43     """Custom command to verify that the git tag matches our version"""
  44 
  45     description = "verify that the git tag matches our version"
  46 
  47     def run(self):
  48         tag = os.getenv("CIRCLE_TAG")
  49 
  50         if tag != VERSION:
  51             info = "Git tag: {0} does not match the version of this app: {1}".format(
  52                 tag, VERSION
  53             )
  54             sys.exit(info)
  55 
  56 
  57 setuptools.setup(
  58     name=NAME,
  59     version=VERSION,
  60     description=DESCRIPTION,
  61     long_description=LONG_DESCRIPTION,
  62     url="https://streamlit.io",
  63     author="Streamlit Inc",
  64     author_email="hello@streamlit.io",
  65     python_requires=">=3.6",
  66     license="Apache 2",
  67     packages=setuptools.find_packages(exclude=["tests", "tests.*"]),
  68     # Requirements
  69     install_requires=requirements,
  70     zip_safe=False,  # install source files not egg
  71     include_package_data=True,  # copy html and friends
  72     entry_points={"console_scripts": ["streamlit = streamlit.cli:main"]},
  73     # For Windows so that streamlit * commands work ie.
  74     # - streamlit version
  75     # - streamlit hello
  76     scripts=["bin/streamlit.cmd"],
  77     cmdclass={
  78         "verify": VerifyVersionCommand,
  79     },
  80 )
  81
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/lib/setup.py b/lib/setup.py
  --- a/lib/setup.py
  +++ b/lib/setup.py
  @@ -8,7 +8,7 @@
   from pipenv.utils import convert_deps_to_pip
   from setuptools.command.install import install
   
  -VERSION = "0.69.1"  # PEP-440
  +VERSION = "0.69.2"  # PEP-440
   
   NAME = "streamlit"
  
verification_info: {"golden_diff": "diff --git a/lib/setup.py b/lib/setup.py\n--- a/lib/setup.py\n+++ b/lib/setup.py\n@@ -8,7 +8,7 @@\n from pipenv.utils import convert_deps_to_pip\n from setuptools.command.install import install\n \n-VERSION = \"0.69.1\"  # PEP-440\n+VERSION = \"0.69.2\"  # PEP-440\n \n NAME = \"streamlit\"\n", "issue": "Streamlit fails to start without Git executable\n# Summary\r\n\r\nStreamlit version `0.69.1` fails to start when run inside a Docker container that doesn't have Git installed.\r\n\r\n# Steps to reproduce\r\n\r\n1. Create a `Dockerfile` with the following contents:\r\n```dockerfile\r\nFROM python:3.8-slim\r\nRUN pip install streamlit\r\nCMD [\"streamlit\", \"hello\"]\r\n```\r\n2. Build the image:\r\n```bash\r\ndocker build -t demo .\r\n```\r\n3. Run the app:\r\n```bash\r\ndocker run -it --rm demo\r\n```\r\n\r\n## Expected behavior:\r\n\r\nStreamlit starts without issues.\r\n\r\n## Actual behavior:\r\n\r\nStreamlit fails to start and displays the following error message:\r\n\r\n```bash\r\nTraceback (most recent call last):\r\n  File \"/usr/local/lib/python3.8/site-packages/git/__init__.py\", line 83, in <module>\r\n    refresh()\r\n  File \"/usr/local/lib/python3.8/site-packages/git/__init__.py\", line 73, in refresh\r\n    if not Git.refresh(path=path):\r\n  File \"/usr/local/lib/python3.8/site-packages/git/cmd.py\", line 278, in refresh\r\n    raise ImportError(err)\r\nImportError: Bad git executable.\r\nThe git executable must be specified in one of the following ways:\r\n    - be included in your $PATH\r\n    - be set via $GIT_PYTHON_GIT_EXECUTABLE\r\n    - explicitly set via git.refresh()\r\n\r\nAll git commands will error until this is rectified.\r\n\r\nThis initial warning can be silenced or aggravated in the future by setting the\r\n$GIT_PYTHON_REFRESH environment variable. Use one of the following values:\r\n    - quiet|q|silence|s|none|n|0: for no warning or exception\r\n    - warn|w|warning|1: for a printed warning\r\n    - error|e|raise|r|2: for a raised exception\r\n\r\nExample:\r\n    export GIT_PYTHON_REFRESH=quiet\r\n```\r\n\r\n## Is this a regression?\r\n\r\n**yes** (worked up until at least version `0.67.1`)\r\n\r\n# Debug info\r\n\r\n- Streamlit version: `0.69.1`\r\n- Python version: `3.8.6`\r\n- Using Conda? PipEnv? PyEnv? Pex? **NO**\r\n- OS version: `4.19.76-linuxkit`\r\n\r\n# Additional information\r\n\r\nThis bug can be worked around by setting `GIT_PYTHON_REFRESH=quiet` environment variable inside the Docker image.\r\n\n", "before_files": [{"content": "import os\nimport platform\nimport setuptools\nimport subprocess\nimport sys\n\nfrom pipenv.project import Project\nfrom pipenv.utils import convert_deps_to_pip\nfrom setuptools.command.install import install\n\nVERSION = \"0.69.1\"  # PEP-440\n\nNAME = \"streamlit\"\n\nDESCRIPTION = \"The fastest way to build data apps in Python\"\n\nLONG_DESCRIPTION = (\n    \"Streamlit's open-source app framework is the easiest way \"\n    \"for data scientists and machine learning engineers to \"\n    \"create beautiful, performant apps in only a few hours! \"\n    \"All in pure Python. All for free.\"\n)\n\npipfile = Project(chdir=False).parsed_pipfile\n\npackages = pipfile[\"packages\"].copy()\nrequirements = convert_deps_to_pip(packages, r=False)\n\n# Check whether xcode tools are available before making watchdog a\n# dependency (only if the current system is a Mac).\nif platform.system() == \"Darwin\":\n    has_xcode = subprocess.call([\"xcode-select\", \"--version\"], shell=False) == 0\n    has_gcc = subprocess.call([\"gcc\", \"--version\"], shell=False) == 0\n\n    if not (has_xcode and has_gcc):\n        try:\n            requirements.remove(\"watchdog\")\n        except ValueError:\n            pass\n\n\nclass VerifyVersionCommand(install):\n    \"\"\"Custom command to verify that the git tag matches our version\"\"\"\n\n    description = \"verify that the git tag matches our version\"\n\n    def run(self):\n        tag = os.getenv(\"CIRCLE_TAG\")\n\n        if tag != VERSION:\n            info = \"Git tag: {0} does not match the version of this app: {1}\".format(\n                tag, VERSION\n            )\n            sys.exit(info)\n\n\nsetuptools.setup(\n    name=NAME,\n    version=VERSION,\n    description=DESCRIPTION,\n    long_description=LONG_DESCRIPTION,\n    url=\"https://streamlit.io\",\n    author=\"Streamlit Inc\",\n    author_email=\"hello@streamlit.io\",\n    python_requires=\">=3.6\",\n    license=\"Apache 2\",\n    packages=setuptools.find_packages(exclude=[\"tests\", \"tests.*\"]),\n    # Requirements\n    install_requires=requirements,\n    zip_safe=False,  # install source files not egg\n    include_package_data=True,  # copy html and friends\n    entry_points={\"console_scripts\": [\"streamlit = streamlit.cli:main\"]},\n    # For Windows so that streamlit * commands work ie.\n    # - streamlit version\n    # - streamlit hello\n    scripts=[\"bin/streamlit.cmd\"],\n    cmdclass={\n        \"verify\": VerifyVersionCommand,\n    },\n)\n", "path": "lib/setup.py"}], "after_files": [{"content": "import os\nimport platform\nimport setuptools\nimport subprocess\nimport sys\n\nfrom pipenv.project import Project\nfrom pipenv.utils import convert_deps_to_pip\nfrom setuptools.command.install import install\n\nVERSION = \"0.69.2\"  # PEP-440\n\nNAME = \"streamlit\"\n\nDESCRIPTION = \"The fastest way to build data apps in Python\"\n\nLONG_DESCRIPTION = (\n    \"Streamlit's open-source app framework is the easiest way \"\n    \"for data scientists and machine learning engineers to \"\n    \"create beautiful, performant apps in only a few hours! \"\n    \"All in pure Python. All for free.\"\n)\n\npipfile = Project(chdir=False).parsed_pipfile\n\npackages = pipfile[\"packages\"].copy()\nrequirements = convert_deps_to_pip(packages, r=False)\n\n# Check whether xcode tools are available before making watchdog a\n# dependency (only if the current system is a Mac).\nif platform.system() == \"Darwin\":\n    has_xcode = subprocess.call([\"xcode-select\", \"--version\"], shell=False) == 0\n    has_gcc = subprocess.call([\"gcc\", \"--version\"], shell=False) == 0\n\n    if not (has_xcode and has_gcc):\n        try:\n            requirements.remove(\"watchdog\")\n        except ValueError:\n            pass\n\n\nclass VerifyVersionCommand(install):\n    \"\"\"Custom command to verify that the git tag matches our version\"\"\"\n\n    description = \"verify that the git tag matches our version\"\n\n    def run(self):\n        tag = os.getenv(\"CIRCLE_TAG\")\n\n        if tag != VERSION:\n            info = \"Git tag: {0} does not match the version of this app: {1}\".format(\n                tag, VERSION\n            )\n            sys.exit(info)\n\n\nsetuptools.setup(\n    name=NAME,\n    version=VERSION,\n    description=DESCRIPTION,\n    long_description=LONG_DESCRIPTION,\n    url=\"https://streamlit.io\",\n    author=\"Streamlit Inc\",\n    author_email=\"hello@streamlit.io\",\n    python_requires=\">=3.6\",\n    license=\"Apache 2\",\n    packages=setuptools.find_packages(exclude=[\"tests\", \"tests.*\"]),\n    # Requirements\n    install_requires=requirements,\n    zip_safe=False,  # install source files not egg\n    include_package_data=True,  # copy html and friends\n    entry_points={\"console_scripts\": [\"streamlit = streamlit.cli:main\"]},\n    # For Windows so that streamlit * commands work ie.\n    # - streamlit version\n    # - streamlit hello\n    scripts=[\"bin/streamlit.cmd\"],\n    cmdclass={\n        \"verify\": VerifyVersionCommand,\n    },\n)\n", "path": "lib/setup.py"}]}