prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Missing classifiers for Python 3.8/3.9
  Python 3.8 and 3.9 are missing from the classifiers in `setup.py`:
  
  https://github.com/plotly/dash/blob/358c5089c929b2e99996f9d4ee6ec634f65437fe/setup.py#L55-L63
  
  But there is no restriction to 3.7 or below in `python_requires`:
  https://github.com/plotly/dash/blob/358c5089c929b2e99996f9d4ee6ec634f65437fe/setup.py#L29
  
  Anecdotally, I've been using Dash on Python 3.9 with no issues. Reporting as an issue as I can't see any mention of Python 3.8 and 3.9 compatibility so far!
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `setup.py`
  Content:
  ```
  1 import io
  2 from setuptools import setup, find_packages
  3 
  4 main_ns = {}
  5 exec(open("dash/version.py").read(), main_ns)  # pylint: disable=exec-used
  6 
  7 
  8 def read_req_file(req_type):
  9     with open("requires-{}.txt".format(req_type)) as fp:
  10         requires = (line.strip() for line in fp)
  11         return [req for req in requires if req and not req.startswith("#")]
  12 
  13 
  14 setup(
  15     name="dash",
  16     version=main_ns["__version__"],
  17     author="Chris Parmer",
  18     author_email="chris@plotly.com",
  19     packages=find_packages(exclude=["tests*"]),
  20     include_package_data=True,
  21     license="MIT",
  22     description=(
  23         "A Python framework for building reactive web-apps. "
  24         "Developed by Plotly."
  25     ),
  26     long_description=io.open("README.md", encoding="utf-8").read(),
  27     long_description_content_type="text/markdown",
  28     install_requires=read_req_file("install"),
  29     python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*",
  30     extras_require={
  31         "dev": read_req_file("dev"),
  32         "testing": read_req_file("testing"),
  33     },
  34     entry_points={
  35         "console_scripts": [
  36             "dash-generate-components = "
  37             "dash.development.component_generator:cli",
  38             "renderer = dash.development.build_process:renderer",
  39         ],
  40         "pytest11": ["dash = dash.testing.plugin"],
  41     },
  42     url="https://plotly.com/dash",
  43     classifiers=[
  44         "Development Status :: 5 - Production/Stable",
  45         "Environment :: Web Environment",
  46         "Framework :: Dash",
  47         "Framework :: Flask",
  48         "Intended Audience :: Developers",
  49         "Intended Audience :: Education",
  50         "Intended Audience :: Financial and Insurance Industry",
  51         "Intended Audience :: Healthcare Industry",
  52         "Intended Audience :: Manufacturing",
  53         "Intended Audience :: Science/Research",
  54         "License :: OSI Approved :: MIT License",
  55         "Programming Language :: Python",
  56         "Programming Language :: Python :: 2",
  57         "Programming Language :: Python :: 2.7",
  58         "Programming Language :: Python :: 3",
  59         "Programming Language :: Python :: 3.3",
  60         "Programming Language :: Python :: 3.4",
  61         "Programming Language :: Python :: 3.5",
  62         "Programming Language :: Python :: 3.6",
  63         "Programming Language :: Python :: 3.7",
  64         "Topic :: Database :: Front-Ends",
  65         "Topic :: Office/Business :: Financial :: Spreadsheet",
  66         "Topic :: Scientific/Engineering :: Visualization",
  67         "Topic :: Software Development :: Libraries :: Application Frameworks",
  68         "Topic :: Software Development :: Widget Sets",
  69     ],
  70 )
  71
  ```
  --- 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/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -61,6 +61,8 @@
           "Programming Language :: Python :: 3.5",
           "Programming Language :: Python :: 3.6",
           "Programming Language :: Python :: 3.7",
  +        "Programming Language :: Python :: 3.8",
  +        "Programming Language :: Python :: 3.9",
           "Topic :: Database :: Front-Ends",
           "Topic :: Office/Business :: Financial :: Spreadsheet",
           "Topic :: Scientific/Engineering :: Visualization",
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -61,6 +61,8 @@\n         \"Programming Language :: Python :: 3.5\",\n         \"Programming Language :: Python :: 3.6\",\n         \"Programming Language :: Python :: 3.7\",\n+        \"Programming Language :: Python :: 3.8\",\n+        \"Programming Language :: Python :: 3.9\",\n         \"Topic :: Database :: Front-Ends\",\n         \"Topic :: Office/Business :: Financial :: Spreadsheet\",\n         \"Topic :: Scientific/Engineering :: Visualization\",\n", "issue": "Missing classifiers for Python 3.8/3.9\nPython 3.8 and 3.9 are missing from the classifiers in `setup.py`:\r\n\r\nhttps://github.com/plotly/dash/blob/358c5089c929b2e99996f9d4ee6ec634f65437fe/setup.py#L55-L63\r\n\r\nBut there is no restriction to 3.7 or below in `python_requires`:\r\nhttps://github.com/plotly/dash/blob/358c5089c929b2e99996f9d4ee6ec634f65437fe/setup.py#L29\r\n\r\nAnecdotally, I've been using Dash on Python 3.9 with no issues. Reporting as an issue as I can't see any mention of Python 3.8 and 3.9 compatibility so far!\n", "before_files": [{"content": "import io\nfrom setuptools import setup, find_packages\n\nmain_ns = {}\nexec(open(\"dash/version.py\").read(), main_ns)  # pylint: disable=exec-used\n\n\ndef read_req_file(req_type):\n    with open(\"requires-{}.txt\".format(req_type)) as fp:\n        requires = (line.strip() for line in fp)\n        return [req for req in requires if req and not req.startswith(\"#\")]\n\n\nsetup(\n    name=\"dash\",\n    version=main_ns[\"__version__\"],\n    author=\"Chris Parmer\",\n    author_email=\"chris@plotly.com\",\n    packages=find_packages(exclude=[\"tests*\"]),\n    include_package_data=True,\n    license=\"MIT\",\n    description=(\n        \"A Python framework for building reactive web-apps. \"\n        \"Developed by Plotly.\"\n    ),\n    long_description=io.open(\"README.md\", encoding=\"utf-8\").read(),\n    long_description_content_type=\"text/markdown\",\n    install_requires=read_req_file(\"install\"),\n    python_requires=\">=2.7, !=3.0.*, !=3.1.*, !=3.2.*\",\n    extras_require={\n        \"dev\": read_req_file(\"dev\"),\n        \"testing\": read_req_file(\"testing\"),\n    },\n    entry_points={\n        \"console_scripts\": [\n            \"dash-generate-components = \"\n            \"dash.development.component_generator:cli\",\n            \"renderer = dash.development.build_process:renderer\",\n        ],\n        \"pytest11\": [\"dash = dash.testing.plugin\"],\n    },\n    url=\"https://plotly.com/dash\",\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Environment :: Web Environment\",\n        \"Framework :: Dash\",\n        \"Framework :: Flask\",\n        \"Intended Audience :: Developers\",\n        \"Intended Audience :: Education\",\n        \"Intended Audience :: Financial and Insurance Industry\",\n        \"Intended Audience :: Healthcare Industry\",\n        \"Intended Audience :: Manufacturing\",\n        \"Intended Audience :: Science/Research\",\n        \"License :: OSI Approved :: MIT License\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.3\",\n        \"Programming Language :: Python :: 3.4\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Topic :: Database :: Front-Ends\",\n        \"Topic :: Office/Business :: Financial :: Spreadsheet\",\n        \"Topic :: Scientific/Engineering :: Visualization\",\n        \"Topic :: Software Development :: Libraries :: Application Frameworks\",\n        \"Topic :: Software Development :: Widget Sets\",\n    ],\n)\n", "path": "setup.py"}], "after_files": [{"content": "import io\nfrom setuptools import setup, find_packages\n\nmain_ns = {}\nexec(open(\"dash/version.py\").read(), main_ns)  # pylint: disable=exec-used\n\n\ndef read_req_file(req_type):\n    with open(\"requires-{}.txt\".format(req_type)) as fp:\n        requires = (line.strip() for line in fp)\n        return [req for req in requires if req and not req.startswith(\"#\")]\n\n\nsetup(\n    name=\"dash\",\n    version=main_ns[\"__version__\"],\n    author=\"Chris Parmer\",\n    author_email=\"chris@plotly.com\",\n    packages=find_packages(exclude=[\"tests*\"]),\n    include_package_data=True,\n    license=\"MIT\",\n    description=(\n        \"A Python framework for building reactive web-apps. \"\n        \"Developed by Plotly.\"\n    ),\n    long_description=io.open(\"README.md\", encoding=\"utf-8\").read(),\n    long_description_content_type=\"text/markdown\",\n    install_requires=read_req_file(\"install\"),\n    python_requires=\">=2.7, !=3.0.*, !=3.1.*, !=3.2.*\",\n    extras_require={\n        \"dev\": read_req_file(\"dev\"),\n        \"testing\": read_req_file(\"testing\"),\n    },\n    entry_points={\n        \"console_scripts\": [\n            \"dash-generate-components = \"\n            \"dash.development.component_generator:cli\",\n            \"renderer = dash.development.build_process:renderer\",\n        ],\n        \"pytest11\": [\"dash = dash.testing.plugin\"],\n    },\n    url=\"https://plotly.com/dash\",\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Environment :: Web Environment\",\n        \"Framework :: Dash\",\n        \"Framework :: Flask\",\n        \"Intended Audience :: Developers\",\n        \"Intended Audience :: Education\",\n        \"Intended Audience :: Financial and Insurance Industry\",\n        \"Intended Audience :: Healthcare Industry\",\n        \"Intended Audience :: Manufacturing\",\n        \"Intended Audience :: Science/Research\",\n        \"License :: OSI Approved :: MIT License\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.3\",\n        \"Programming Language :: Python :: 3.4\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Topic :: Database :: Front-Ends\",\n        \"Topic :: Office/Business :: Financial :: Spreadsheet\",\n        \"Topic :: Scientific/Engineering :: Visualization\",\n        \"Topic :: Software Development :: Libraries :: Application Frameworks\",\n        \"Topic :: Software Development :: Widget Sets\",\n    ],\n)\n", "path": "setup.py"}]}