We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Installs tests package
**Describe the bug**
Installing yellowbrick also installs a package "tests" into the enviornment.

**To Reproduce**
```shell
PS> virtualenv env
PS> .\env\Scripts\activate
PS> python -c "import tests; print(tests.__path__)"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'tests'
PS> pip install yellowbrick
PS> python -c "import tests; print(tests.__path__)"
_NamespacePath(['<PATH_FROM_C:>\\env\\lib\\site-packages\\tests'])
```
I dug into the files and found the scikit-yb developer copyright notice in the source files in the fields.

**Expected behavior**
I would guess it is not the expected nor intendent behavior to install the tests package. Also looking at the setup.py it seems like it should be excluded, so i do not understand why this isn't the case. Mainly,  this is a issue as it causes python to import the yb tests package instead of my local tests package when running pytest.

**Desktop (please complete the following information):**
 - OS: Windows
 - Python Version 3.7.4
 - Yellowbrick Version 1.0.1


--- 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",
81     "bin",
82     "docs",
83     "fixtures",
84     "register",
85     "notebooks",
86     "examples",
87     "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()

```

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -77,14 +77,14 @@
 
 ## Directories to ignore in find_packages
 EXCLUDES = (
-    "tests",
+    "tests", "tests.*",
     "bin",
-    "docs",
+    "docs", "docs.*",
     "fixtures",
     "register",
-    "notebooks",
-    "examples",
-    "binder",
+    "notebooks", "notebooks.*",
+    "examples", "examples.*",
+    "binder", "binder.*",
     "paper",
 )

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -77,14 +77,14 @@\n \n ## Directories to ignore in find_packages\n EXCLUDES = (\n-    \"tests\",\n+    \"tests\", \"tests.*\",\n     \"bin\",\n-    \"docs\",\n+    \"docs\", \"docs.*\",\n     \"fixtures\",\n     \"register\",\n-    \"notebooks\",\n-    \"examples\",\n-    \"binder\",\n+    \"notebooks\", \"notebooks.*\",\n+    \"examples\", \"examples.*\",\n+    \"binder\", \"binder.*\",\n     \"paper\",\n )\n", "issue": "Installs tests package\n**Describe the bug**\r\nInstalling yellowbrick also installs a package \"tests\" into the enviornment.\r\n\r\n**To Reproduce**\r\n```shell\r\nPS> virtualenv env\r\nPS> .\\env\\Scripts\\activate\r\nPS> python -c \"import tests; print(tests.__path__)\"\r\nTraceback (most recent call last):\r\n  File \"<string>\", line 1, in <module>\r\nModuleNotFoundError: No module named 'tests'\r\nPS> pip install yellowbrick\r\nPS> python -c \"import tests; print(tests.__path__)\"\r\n_NamespacePath(['<PATH_FROM_C:>\\\\env\\\\lib\\\\site-packages\\\\tests'])\r\n```\r\nI dug into the files and found the scikit-yb developer copyright notice in the source files in the fields.\r\n\r\n**Expected behavior**\r\nI would guess it is not the expected nor intendent behavior to install the tests package. Also looking at the setup.py it seems like it should be excluded, so i do not understand why this isn't the case. Mainly,  this is a issue as it causes python to import the yb tests package instead of my local tests package when running pytest.\r\n\r\n**Desktop (please complete the following information):**\r\n - OS: Windows\r\n - Python Version 3.7.4\r\n - Yellowbrick Version 1.0.1\r\n\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\",\n    \"bin\",\n    \"docs\",\n    \"fixtures\",\n    \"register\",\n    \"notebooks\",\n    \"examples\",\n    \"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    \"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"}]}