prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  pytest-runner is deprecated
  pytest-runner is deprecated: https://github.com/pytest-dev/pytest-runner/#deprecation-notice
  
  If I find time, then I can make a PR, but I thought I'd let you know in the meantime.
  
  --- 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 #!/usr/bin/env python
  2 # setup
  3 # Setup script for installing yellowbrick
  4 #
  5 # Author:   Benjamin Bengfort
  6 # Created:  Wed May 18 14:33:26 2016 -0400
  7 #
  8 # Copyright (C) 2016 The scikit-yb developers
  9 # For license information, see LICENSE.txt and NOTICE.md
  10 #
  11 # ID: setup.py [c4f3ba7] benjamin@bengfort.com $
  12 
  13 """
  14 Setup script for installing yellowbrick.
  15 See http://bbengfort.github.io/programmer/2016/01/20/packaging-with-pypi.html
  16 """
  17 
  18 ##########################################################################
  19 ## Imports
  20 ##########################################################################
  21 
  22 import os
  23 import codecs
  24 
  25 from setuptools import setup
  26 from setuptools import find_packages
  27 
  28 ##########################################################################
  29 ## Package Information
  30 ##########################################################################
  31 
  32 ## Basic information
  33 ## Basic information
  34 NAME         = "yellowbrick"
  35 DESCRIPTION  = "A suite of visual analysis and diagnostic tools for machine learning."
  36 AUTHOR       = "The scikit-yb developers"
  37 EMAIL        = "yellowbrick@googlegroups.com"
  38 MAINTAINER   = "The scikit-yb developers"
  39 LICENSE      = "Apache 2"
  40 REPOSITORY   = "https://github.com/DistrictDataLabs/yellowbrick"
  41 PACKAGE      = "yellowbrick"
  42 URL          = "http://scikit-yb.org/"
  43 
  44 ## Define the keywords
  45 KEYWORDS = (
  46     "visualization",
  47     "machine learning",
  48     "scikit-learn",
  49     "matplotlib",
  50     "data science",
  51 )
  52 
  53 ## Define the classifiers
  54 ## See https://pypi.python.org/pypi?%3Aaction=list_classifiers
  55 CLASSIFIERS  = (
  56     "Development Status :: 5 - Production/Stable",
  57     "Intended Audience :: Developers",
  58     "Intended Audience :: Science/Research",
  59     "License :: OSI Approved :: Apache Software License",
  60     "Natural Language :: English",
  61     "Operating System :: OS Independent",
  62     "Programming Language :: Python",
  63     "Programming Language :: Python :: 3.5",
  64     "Programming Language :: Python :: 3.6",
  65     "Programming Language :: Python :: 3.7",
  66     "Programming Language :: Python :: 3.8",
  67     "Topic :: Software Development",
  68     "Topic :: Software Development :: Libraries :: Python Modules",
  69     "Topic :: Scientific/Engineering :: Visualization",
  70 )
  71 
  72 ## Important Paths
  73 PROJECT = os.path.abspath(os.path.dirname(__file__))
  74 REQUIRE_PATH = "requirements.txt"
  75 VERSION_PATH = os.path.join(PACKAGE, "version.py")
  76 PKG_DESCRIBE = "DESCRIPTION.md"
  77 
  78 ## Directories to ignore in find_packages
  79 EXCLUDES = (
  80     "tests", "tests.*",
  81     "bin",
  82     "docs", "docs.*",
  83     "fixtures",
  84     "register",
  85     "notebooks", "notebooks.*",
  86     "examples", "examples.*",
  87     "binder", "binder.*",
  88     "paper",
  89 )
  90 
  91 ##########################################################################
  92 ## Helper Functions
  93 ##########################################################################
  94 
  95 
  96 def read(*parts):
  97     """
  98     Assume UTF-8 encoding and return the contents of the file located at the
  99     absolute path from the REPOSITORY joined with *parts.
  100     """
  101     with codecs.open(os.path.join(PROJECT, *parts), "rb", "utf-8") as f:
  102         return f.read()
  103 
  104 
  105 def get_version(path=VERSION_PATH):
  106     """
  107     Reads the python file defined in the VERSION_PATH to find the get_version
  108     function, and executes it to ensure that it is loaded correctly. Separating
  109     the version in this way ensures no additional code is executed.
  110     """
  111     namespace = {}
  112     exec(read(path), namespace)
  113     return namespace["get_version"](short=True)
  114 
  115 
  116 def get_requires(path=REQUIRE_PATH):
  117     """
  118     Yields a generator of requirements as defined by the REQUIRE_PATH which
  119     should point to a requirements.txt output by `pip freeze`.
  120     """
  121     for line in read(path).splitlines():
  122         line = line.strip()
  123         if line and not line.startswith("#"):
  124             yield line
  125 
  126 
  127 def get_description_type(path=PKG_DESCRIBE):
  128     """
  129     Returns the long_description_content_type based on the extension of the
  130     package describe path (e.g. .txt, .rst, or .md).
  131     """
  132     _, ext = os.path.splitext(path)
  133     return {".rst": "text/x-rst", ".txt": "text/plain", ".md": "text/markdown"}[ext]
  134 
  135 
  136 ##########################################################################
  137 ## Define the configuration
  138 ##########################################################################
  139 
  140 config = {
  141     "name": NAME,
  142     "version": get_version(),
  143     "description": DESCRIPTION,
  144     "long_description": read(PKG_DESCRIBE),
  145     "long_description_content_type": get_description_type(PKG_DESCRIBE),
  146     "classifiers": CLASSIFIERS,
  147     "keywords": KEYWORDS,
  148     "license": LICENSE,
  149     "author": AUTHOR,
  150     "author_email": EMAIL,
  151     "url": URL,
  152     "maintainer": MAINTAINER,
  153     "maintainer_email": EMAIL,
  154     "project_urls": {
  155         "Documentation": URL,
  156         "Download": "{}/tarball/v{}".format(REPOSITORY, get_version()),
  157         "Source": REPOSITORY,
  158         "Tracker": "{}/issues".format(REPOSITORY),
  159     },
  160     "download_url": "{}/tarball/v{}".format(REPOSITORY, get_version()),
  161     "packages": find_packages(where=PROJECT, exclude=EXCLUDES),
  162     "package_data": {"yellowbrick": ["datasets/manifest.json"]},
  163     "zip_safe": False,
  164     "entry_points": {"console_scripts": []},
  165     "install_requires": list(get_requires()),
  166     "python_requires": ">=3.4, <4",
  167     "setup_requires": ["pytest-runner"],
  168     "tests_require": ["pytest"],
  169 }
  170 
  171 
  172 ##########################################################################
  173 ## Run setup script
  174 ##########################################################################
  175 
  176 if __name__ == "__main__":
  177     setup(**config)
  178
  ```
  --- 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
  @@ -163,9 +163,7 @@
       "zip_safe": False,
       "entry_points": {"console_scripts": []},
       "install_requires": list(get_requires()),
  -    "python_requires": ">=3.4, <4",
  -    "setup_requires": ["pytest-runner"],
  -    "tests_require": ["pytest"],
  +    "python_requires": ">=3.4, <4"
   }
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -163,9 +163,7 @@\n     \"zip_safe\": False,\n     \"entry_points\": {\"console_scripts\": []},\n     \"install_requires\": list(get_requires()),\n-    \"python_requires\": \">=3.4, <4\",\n-    \"setup_requires\": [\"pytest-runner\"],\n-    \"tests_require\": [\"pytest\"],\n+    \"python_requires\": \">=3.4, <4\"\n }\n", "issue": "pytest-runner is deprecated\npytest-runner is deprecated: https://github.com/pytest-dev/pytest-runner/#deprecation-notice\r\n\r\nIf I find time, then I can make a PR, but I thought I'd let you know in the meantime.\n", "before_files": [{"content": "#!/usr/bin/env python\n# setup\n# Setup script for installing yellowbrick\n#\n# Author:   Benjamin Bengfort\n# Created:  Wed May 18 14:33:26 2016 -0400\n#\n# Copyright (C) 2016 The scikit-yb developers\n# For license information, see LICENSE.txt and NOTICE.md\n#\n# ID: setup.py [c4f3ba7] benjamin@bengfort.com $\n\n\"\"\"\nSetup script for installing yellowbrick.\nSee http://bbengfort.github.io/programmer/2016/01/20/packaging-with-pypi.html\n\"\"\"\n\n##########################################################################\n## Imports\n##########################################################################\n\nimport os\nimport codecs\n\nfrom setuptools import setup\nfrom setuptools import find_packages\n\n##########################################################################\n## Package Information\n##########################################################################\n\n## Basic information\n## Basic information\nNAME         = \"yellowbrick\"\nDESCRIPTION  = \"A suite of visual analysis and diagnostic tools for machine learning.\"\nAUTHOR       = \"The scikit-yb developers\"\nEMAIL        = \"yellowbrick@googlegroups.com\"\nMAINTAINER   = \"The scikit-yb developers\"\nLICENSE      = \"Apache 2\"\nREPOSITORY   = \"https://github.com/DistrictDataLabs/yellowbrick\"\nPACKAGE      = \"yellowbrick\"\nURL          = \"http://scikit-yb.org/\"\n\n## Define the keywords\nKEYWORDS = (\n    \"visualization\",\n    \"machine learning\",\n    \"scikit-learn\",\n    \"matplotlib\",\n    \"data science\",\n)\n\n## Define the classifiers\n## See https://pypi.python.org/pypi?%3Aaction=list_classifiers\nCLASSIFIERS  = (\n    \"Development Status :: 5 - Production/Stable\",\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Science/Research\",\n    \"License :: OSI Approved :: Apache Software License\",\n    \"Natural Language :: English\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python\",\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    \"Topic :: Software Development\",\n    \"Topic :: Software Development :: Libraries :: Python Modules\",\n    \"Topic :: Scientific/Engineering :: Visualization\",\n)\n\n## Important Paths\nPROJECT = os.path.abspath(os.path.dirname(__file__))\nREQUIRE_PATH = \"requirements.txt\"\nVERSION_PATH = os.path.join(PACKAGE, \"version.py\")\nPKG_DESCRIBE = \"DESCRIPTION.md\"\n\n## Directories to ignore in find_packages\nEXCLUDES = (\n    \"tests\", \"tests.*\",\n    \"bin\",\n    \"docs\", \"docs.*\",\n    \"fixtures\",\n    \"register\",\n    \"notebooks\", \"notebooks.*\",\n    \"examples\", \"examples.*\",\n    \"binder\", \"binder.*\",\n    \"paper\",\n)\n\n##########################################################################\n## Helper Functions\n##########################################################################\n\n\ndef read(*parts):\n    \"\"\"\n    Assume UTF-8 encoding and return the contents of the file located at the\n    absolute path from the REPOSITORY joined with *parts.\n    \"\"\"\n    with codecs.open(os.path.join(PROJECT, *parts), \"rb\", \"utf-8\") as f:\n        return f.read()\n\n\ndef get_version(path=VERSION_PATH):\n    \"\"\"\n    Reads the python file defined in the VERSION_PATH to find the get_version\n    function, and executes it to ensure that it is loaded correctly. Separating\n    the version in this way ensures no additional code is executed.\n    \"\"\"\n    namespace = {}\n    exec(read(path), namespace)\n    return namespace[\"get_version\"](short=True)\n\n\ndef get_requires(path=REQUIRE_PATH):\n    \"\"\"\n    Yields a generator of requirements as defined by the REQUIRE_PATH which\n    should point to a requirements.txt output by `pip freeze`.\n    \"\"\"\n    for line in read(path).splitlines():\n        line = line.strip()\n        if line and not line.startswith(\"#\"):\n            yield line\n\n\ndef get_description_type(path=PKG_DESCRIBE):\n    \"\"\"\n    Returns the long_description_content_type based on the extension of the\n    package describe path (e.g. .txt, .rst, or .md).\n    \"\"\"\n    _, ext = os.path.splitext(path)\n    return {\".rst\": \"text/x-rst\", \".txt\": \"text/plain\", \".md\": \"text/markdown\"}[ext]\n\n\n##########################################################################\n## Define the configuration\n##########################################################################\n\nconfig = {\n    \"name\": NAME,\n    \"version\": get_version(),\n    \"description\": DESCRIPTION,\n    \"long_description\": read(PKG_DESCRIBE),\n    \"long_description_content_type\": get_description_type(PKG_DESCRIBE),\n    \"classifiers\": CLASSIFIERS,\n    \"keywords\": KEYWORDS,\n    \"license\": LICENSE,\n    \"author\": AUTHOR,\n    \"author_email\": EMAIL,\n    \"url\": URL,\n    \"maintainer\": MAINTAINER,\n    \"maintainer_email\": EMAIL,\n    \"project_urls\": {\n        \"Documentation\": URL,\n        \"Download\": \"{}/tarball/v{}\".format(REPOSITORY, get_version()),\n        \"Source\": REPOSITORY,\n        \"Tracker\": \"{}/issues\".format(REPOSITORY),\n    },\n    \"download_url\": \"{}/tarball/v{}\".format(REPOSITORY, get_version()),\n    \"packages\": find_packages(where=PROJECT, exclude=EXCLUDES),\n    \"package_data\": {\"yellowbrick\": [\"datasets/manifest.json\"]},\n    \"zip_safe\": False,\n    \"entry_points\": {\"console_scripts\": []},\n    \"install_requires\": list(get_requires()),\n    \"python_requires\": \">=3.4, <4\",\n    \"setup_requires\": [\"pytest-runner\"],\n    \"tests_require\": [\"pytest\"],\n}\n\n\n##########################################################################\n## Run setup script\n##########################################################################\n\nif __name__ == \"__main__\":\n    setup(**config)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# setup\n# Setup script for installing yellowbrick\n#\n# Author:   Benjamin Bengfort\n# Created:  Wed May 18 14:33:26 2016 -0400\n#\n# Copyright (C) 2016 The scikit-yb developers\n# For license information, see LICENSE.txt and NOTICE.md\n#\n# ID: setup.py [c4f3ba7] benjamin@bengfort.com $\n\n\"\"\"\nSetup script for installing yellowbrick.\nSee http://bbengfort.github.io/programmer/2016/01/20/packaging-with-pypi.html\n\"\"\"\n\n##########################################################################\n## Imports\n##########################################################################\n\nimport os\nimport codecs\n\nfrom setuptools import setup\nfrom setuptools import find_packages\n\n##########################################################################\n## Package Information\n##########################################################################\n\n## Basic information\n## Basic information\nNAME         = \"yellowbrick\"\nDESCRIPTION  = \"A suite of visual analysis and diagnostic tools for machine learning.\"\nAUTHOR       = \"The scikit-yb developers\"\nEMAIL        = \"yellowbrick@googlegroups.com\"\nMAINTAINER   = \"The scikit-yb developers\"\nLICENSE      = \"Apache 2\"\nREPOSITORY   = \"https://github.com/DistrictDataLabs/yellowbrick\"\nPACKAGE      = \"yellowbrick\"\nURL          = \"http://scikit-yb.org/\"\n\n## Define the keywords\nKEYWORDS = (\n    \"visualization\",\n    \"machine learning\",\n    \"scikit-learn\",\n    \"matplotlib\",\n    \"data science\",\n)\n\n## Define the classifiers\n## See https://pypi.python.org/pypi?%3Aaction=list_classifiers\nCLASSIFIERS  = (\n    \"Development Status :: 5 - Production/Stable\",\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Science/Research\",\n    \"License :: OSI Approved :: Apache Software License\",\n    \"Natural Language :: English\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python\",\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    \"Topic :: Software Development\",\n    \"Topic :: Software Development :: Libraries :: Python Modules\",\n    \"Topic :: Scientific/Engineering :: Visualization\",\n)\n\n## Important Paths\nPROJECT = os.path.abspath(os.path.dirname(__file__))\nREQUIRE_PATH = \"requirements.txt\"\nVERSION_PATH = os.path.join(PACKAGE, \"version.py\")\nPKG_DESCRIBE = \"DESCRIPTION.md\"\n\n## Directories to ignore in find_packages\nEXCLUDES = (\n    \"tests\", \"tests.*\",\n    \"bin\",\n    \"docs\", \"docs.*\",\n    \"fixtures\",\n    \"register\",\n    \"notebooks\", \"notebooks.*\",\n    \"examples\", \"examples.*\",\n    \"binder\", \"binder.*\",\n    \"paper\",\n)\n\n##########################################################################\n## Helper Functions\n##########################################################################\n\n\ndef read(*parts):\n    \"\"\"\n    Assume UTF-8 encoding and return the contents of the file located at the\n    absolute path from the REPOSITORY joined with *parts.\n    \"\"\"\n    with codecs.open(os.path.join(PROJECT, *parts), \"rb\", \"utf-8\") as f:\n        return f.read()\n\n\ndef get_version(path=VERSION_PATH):\n    \"\"\"\n    Reads the python file defined in the VERSION_PATH to find the get_version\n    function, and executes it to ensure that it is loaded correctly. Separating\n    the version in this way ensures no additional code is executed.\n    \"\"\"\n    namespace = {}\n    exec(read(path), namespace)\n    return namespace[\"get_version\"](short=True)\n\n\ndef get_requires(path=REQUIRE_PATH):\n    \"\"\"\n    Yields a generator of requirements as defined by the REQUIRE_PATH which\n    should point to a requirements.txt output by `pip freeze`.\n    \"\"\"\n    for line in read(path).splitlines():\n        line = line.strip()\n        if line and not line.startswith(\"#\"):\n            yield line\n\n\ndef get_description_type(path=PKG_DESCRIBE):\n    \"\"\"\n    Returns the long_description_content_type based on the extension of the\n    package describe path (e.g. .txt, .rst, or .md).\n    \"\"\"\n    _, ext = os.path.splitext(path)\n    return {\".rst\": \"text/x-rst\", \".txt\": \"text/plain\", \".md\": \"text/markdown\"}[ext]\n\n\n##########################################################################\n## Define the configuration\n##########################################################################\n\nconfig = {\n    \"name\": NAME,\n    \"version\": get_version(),\n    \"description\": DESCRIPTION,\n    \"long_description\": read(PKG_DESCRIBE),\n    \"long_description_content_type\": get_description_type(PKG_DESCRIBE),\n    \"classifiers\": CLASSIFIERS,\n    \"keywords\": KEYWORDS,\n    \"license\": LICENSE,\n    \"author\": AUTHOR,\n    \"author_email\": EMAIL,\n    \"url\": URL,\n    \"maintainer\": MAINTAINER,\n    \"maintainer_email\": EMAIL,\n    \"project_urls\": {\n        \"Documentation\": URL,\n        \"Download\": \"{}/tarball/v{}\".format(REPOSITORY, get_version()),\n        \"Source\": REPOSITORY,\n        \"Tracker\": \"{}/issues\".format(REPOSITORY),\n    },\n    \"download_url\": \"{}/tarball/v{}\".format(REPOSITORY, get_version()),\n    \"packages\": find_packages(where=PROJECT, exclude=EXCLUDES),\n    \"package_data\": {\"yellowbrick\": [\"datasets/manifest.json\"]},\n    \"zip_safe\": False,\n    \"entry_points\": {\"console_scripts\": []},\n    \"install_requires\": list(get_requires()),\n    \"python_requires\": \">=3.4, <4\"\n}\n\n\n##########################################################################\n## Run setup script\n##########################################################################\n\nif __name__ == \"__main__\":\n    setup(**config)\n", "path": "setup.py"}]}