We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
broken Python 3.3 support due to wheel
With #1176, Python 3.3 support is broken because wheel 0.31 dropped support.

This means that virtualenv 16.0.0 will install fine on a Python 3.3 config, but then fail to create any virtualenvs.

virtualenv should also declare that it doesn't support 3.3

--- 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 os
2 import re
3 import shutil
4 import sys
5 
6 if sys.version_info[:2] < (2, 7):
7     sys.exit('virtualenv requires Python 2.7 or higher.')
8 
9 try:
10     from setuptools import setup
11     from setuptools.command.test import test as TestCommand
12 
13     class PyTest(TestCommand):
14         user_options = [('pytest-args=', 'a', "Arguments to pass to py.test")]
15 
16         def initialize_options(self):
17             TestCommand.initialize_options(self)
18             self.pytest_args = []
19 
20         def finalize_options(self):
21             TestCommand.finalize_options(self)
22             #self.test_args = []
23             #self.test_suite = True
24 
25         def run_tests(self):
26             # import here, because outside the eggs aren't loaded
27             import pytest
28             sys.exit(pytest.main(self.pytest_args))
29 
30     setup_params = {
31         'entry_points': {
32             'console_scripts': ['virtualenv=virtualenv:main'],
33         },
34         'zip_safe': False,
35         'cmdclass': {'test': PyTest},
36         'tests_require': ['pytest', 'mock'],
37     }
38 except ImportError:
39     from distutils.core import setup
40     if sys.platform == 'win32':
41         print('Note: without Setuptools installed you will '
42               'have to use "python -m virtualenv ENV"')
43         setup_params = {}
44     else:
45         script = 'scripts/virtualenv'
46         setup_params = {'scripts': [script]}
47 
48 
49 def read_file(*paths):
50     here = os.path.dirname(os.path.abspath(__file__))
51     with open(os.path.join(here, *paths)) as f:
52         return f.read()
53 
54 # Get long_description from index.rst:
55 long_description = read_file('docs', 'index.rst')
56 long_description = long_description.strip().split('split here', 1)[0]
57 # Add release history
58 changes = read_file('docs', 'changes.rst')
59 # Only report last two releases for brevity
60 releases_found = 0
61 change_lines = []
62 for line in changes.splitlines():
63     change_lines.append(line)
64     if line.startswith('--------------'):
65         releases_found += 1
66     if releases_found > 2:
67         break
68 
69 changes = '\n'.join(change_lines[:-2]) + '\n'
70 changes += '`Full Changelog <https://virtualenv.pypa.io/en/latest/changes.html>`_.'
71 # Replace issue/pull directives
72 changes = re.sub(r':pull:`(\d+)`', r'PR #\1', changes)
73 changes = re.sub(r':issue:`(\d+)`', r'#\1', changes)
74 
75 long_description += '\n\n' + changes
76 
77 
78 def get_version():
79     version_file = read_file('virtualenv.py')
80     version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
81                               version_file, re.M)
82     if version_match:
83         return version_match.group(1)
84     raise RuntimeError("Unable to find version string.")
85 
86 
87 # Hack to prevent stupid TypeError: 'NoneType' object is not callable error on
88 # exit of python setup.py test # in multiprocessing/util.py _exit_function when
89 # running python setup.py test (see
90 # http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)
91 try:
92     import multiprocessing  # noqa
93 except ImportError:
94     pass
95 
96 setup(
97     name='virtualenv',
98     version=get_version(),
99     description="Virtual Python Environment builder",
100     long_description=long_description,
101     classifiers=[
102         'Development Status :: 5 - Production/Stable',
103         'Intended Audience :: Developers',
104         'License :: OSI Approved :: MIT License',
105         'Programming Language :: Python :: 2',
106         'Programming Language :: Python :: 2.7',
107         'Programming Language :: Python :: 3',
108         'Programming Language :: Python :: 3.4',
109         'Programming Language :: Python :: 3.5',
110         'Programming Language :: Python :: 3.6',
111     ],
112     keywords='setuptools deployment installation distutils',
113     author='Ian Bicking',
114     author_email='ianb@colorstudy.com',
115     maintainer='Jannis Leidel, Carl Meyer and Brian Rosner',
116     maintainer_email='python-virtualenv@groups.google.com',
117     url='https://virtualenv.pypa.io/',
118     license='MIT',
119     py_modules=['virtualenv'],
120     packages=['virtualenv_support'],
121     package_data={'virtualenv_support': ['*.whl']},
122     python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*',
123     **setup_params)
124
```
--- 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
@@ -108,6 +108,7 @@
         'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
+        'Programming Language :: Python :: 3.7',
     ],
     keywords='setuptools deployment installation distutils',
     author='Ian Bicking',
@@ -119,5 +120,5 @@
     py_modules=['virtualenv'],
     packages=['virtualenv_support'],
     package_data={'virtualenv_support': ['*.whl']},
-    python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*',
+    python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*',
     **setup_params)

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -108,6 +108,7 @@\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     ],\n     keywords='setuptools deployment installation distutils',\n     author='Ian Bicking',\n@@ -119,5 +120,5 @@\n     py_modules=['virtualenv'],\n     packages=['virtualenv_support'],\n     package_data={'virtualenv_support': ['*.whl']},\n-    python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*',\n+    python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*',\n     **setup_params)\n", "issue": "broken Python 3.3 support due to wheel\nWith #1176, Python 3.3 support is broken because wheel 0.31 dropped support.\r\n\r\nThis means that virtualenv 16.0.0 will install fine on a Python 3.3 config, but then fail to create any virtualenvs.\r\n\r\nvirtualenv should also declare that it doesn't support 3.3\n", "before_files": [{"content": "import os\nimport re\nimport shutil\nimport sys\n\nif sys.version_info[:2] < (2, 7):\n    sys.exit('virtualenv requires Python 2.7 or higher.')\n\ntry:\n    from setuptools import setup\n    from setuptools.command.test import test as TestCommand\n\n    class PyTest(TestCommand):\n        user_options = [('pytest-args=', 'a', \"Arguments to pass to py.test\")]\n\n        def initialize_options(self):\n            TestCommand.initialize_options(self)\n            self.pytest_args = []\n\n        def finalize_options(self):\n            TestCommand.finalize_options(self)\n            #self.test_args = []\n            #self.test_suite = True\n\n        def run_tests(self):\n            # import here, because outside the eggs aren't loaded\n            import pytest\n            sys.exit(pytest.main(self.pytest_args))\n\n    setup_params = {\n        'entry_points': {\n            'console_scripts': ['virtualenv=virtualenv:main'],\n        },\n        'zip_safe': False,\n        'cmdclass': {'test': PyTest},\n        'tests_require': ['pytest', 'mock'],\n    }\nexcept ImportError:\n    from distutils.core import setup\n    if sys.platform == 'win32':\n        print('Note: without Setuptools installed you will '\n              'have to use \"python -m virtualenv ENV\"')\n        setup_params = {}\n    else:\n        script = 'scripts/virtualenv'\n        setup_params = {'scripts': [script]}\n\n\ndef read_file(*paths):\n    here = os.path.dirname(os.path.abspath(__file__))\n    with open(os.path.join(here, *paths)) as f:\n        return f.read()\n\n# Get long_description from index.rst:\nlong_description = read_file('docs', 'index.rst')\nlong_description = long_description.strip().split('split here', 1)[0]\n# Add release history\nchanges = read_file('docs', 'changes.rst')\n# Only report last two releases for brevity\nreleases_found = 0\nchange_lines = []\nfor line in changes.splitlines():\n    change_lines.append(line)\n    if line.startswith('--------------'):\n        releases_found += 1\n    if releases_found > 2:\n        break\n\nchanges = '\\n'.join(change_lines[:-2]) + '\\n'\nchanges += '`Full Changelog <https://virtualenv.pypa.io/en/latest/changes.html>`_.'\n# Replace issue/pull directives\nchanges = re.sub(r':pull:`(\\d+)`', r'PR #\\1', changes)\nchanges = re.sub(r':issue:`(\\d+)`', r'#\\1', changes)\n\nlong_description += '\\n\\n' + changes\n\n\ndef get_version():\n    version_file = read_file('virtualenv.py')\n    version_match = re.search(r\"^__version__ = ['\\\"]([^'\\\"]*)['\\\"]\",\n                              version_file, re.M)\n    if version_match:\n        return version_match.group(1)\n    raise RuntimeError(\"Unable to find version string.\")\n\n\n# Hack to prevent stupid TypeError: 'NoneType' object is not callable error on\n# exit of python setup.py test # in multiprocessing/util.py _exit_function when\n# running python setup.py test (see\n# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)\ntry:\n    import multiprocessing  # noqa\nexcept ImportError:\n    pass\n\nsetup(\n    name='virtualenv',\n    version=get_version(),\n    description=\"Virtual Python Environment builder\",\n    long_description=long_description,\n    classifiers=[\n        'Development Status :: 5 - Production/Stable',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: MIT License',\n        'Programming Language :: Python :: 2',\n        'Programming Language :: Python :: 2.7',\n        'Programming Language :: Python :: 3',\n        'Programming Language :: Python :: 3.4',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n    ],\n    keywords='setuptools deployment installation distutils',\n    author='Ian Bicking',\n    author_email='ianb@colorstudy.com',\n    maintainer='Jannis Leidel, Carl Meyer and Brian Rosner',\n    maintainer_email='python-virtualenv@groups.google.com',\n    url='https://virtualenv.pypa.io/',\n    license='MIT',\n    py_modules=['virtualenv'],\n    packages=['virtualenv_support'],\n    package_data={'virtualenv_support': ['*.whl']},\n    python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*',\n    **setup_params)\n", "path": "setup.py"}], "after_files": [{"content": "import os\nimport re\nimport shutil\nimport sys\n\nif sys.version_info[:2] < (2, 7):\n    sys.exit('virtualenv requires Python 2.7 or higher.')\n\ntry:\n    from setuptools import setup\n    from setuptools.command.test import test as TestCommand\n\n    class PyTest(TestCommand):\n        user_options = [('pytest-args=', 'a', \"Arguments to pass to py.test\")]\n\n        def initialize_options(self):\n            TestCommand.initialize_options(self)\n            self.pytest_args = []\n\n        def finalize_options(self):\n            TestCommand.finalize_options(self)\n            #self.test_args = []\n            #self.test_suite = True\n\n        def run_tests(self):\n            # import here, because outside the eggs aren't loaded\n            import pytest\n            sys.exit(pytest.main(self.pytest_args))\n\n    setup_params = {\n        'entry_points': {\n            'console_scripts': ['virtualenv=virtualenv:main'],\n        },\n        'zip_safe': False,\n        'cmdclass': {'test': PyTest},\n        'tests_require': ['pytest', 'mock'],\n    }\nexcept ImportError:\n    from distutils.core import setup\n    if sys.platform == 'win32':\n        print('Note: without Setuptools installed you will '\n              'have to use \"python -m virtualenv ENV\"')\n        setup_params = {}\n    else:\n        script = 'scripts/virtualenv'\n        setup_params = {'scripts': [script]}\n\n\ndef read_file(*paths):\n    here = os.path.dirname(os.path.abspath(__file__))\n    with open(os.path.join(here, *paths)) as f:\n        return f.read()\n\n# Get long_description from index.rst:\nlong_description = read_file('docs', 'index.rst')\nlong_description = long_description.strip().split('split here', 1)[0]\n# Add release history\nchanges = read_file('docs', 'changes.rst')\n# Only report last two releases for brevity\nreleases_found = 0\nchange_lines = []\nfor line in changes.splitlines():\n    change_lines.append(line)\n    if line.startswith('--------------'):\n        releases_found += 1\n    if releases_found > 2:\n        break\n\nchanges = '\\n'.join(change_lines[:-2]) + '\\n'\nchanges += '`Full Changelog <https://virtualenv.pypa.io/en/latest/changes.html>`_.'\n# Replace issue/pull directives\nchanges = re.sub(r':pull:`(\\d+)`', r'PR #\\1', changes)\nchanges = re.sub(r':issue:`(\\d+)`', r'#\\1', changes)\n\nlong_description += '\\n\\n' + changes\n\n\ndef get_version():\n    version_file = read_file('virtualenv.py')\n    version_match = re.search(r\"^__version__ = ['\\\"]([^'\\\"]*)['\\\"]\",\n                              version_file, re.M)\n    if version_match:\n        return version_match.group(1)\n    raise RuntimeError(\"Unable to find version string.\")\n\n\n# Hack to prevent stupid TypeError: 'NoneType' object is not callable error on\n# exit of python setup.py test # in multiprocessing/util.py _exit_function when\n# running python setup.py test (see\n# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)\ntry:\n    import multiprocessing  # noqa\nexcept ImportError:\n    pass\n\nsetup(\n    name='virtualenv',\n    version=get_version(),\n    description=\"Virtual Python Environment builder\",\n    long_description=long_description,\n    classifiers=[\n        'Development Status :: 5 - Production/Stable',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: MIT License',\n        'Programming Language :: Python :: 2',\n        'Programming Language :: Python :: 2.7',\n        'Programming Language :: Python :: 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    ],\n    keywords='setuptools deployment installation distutils',\n    author='Ian Bicking',\n    author_email='ianb@colorstudy.com',\n    maintainer='Jannis Leidel, Carl Meyer and Brian Rosner',\n    maintainer_email='python-virtualenv@groups.google.com',\n    url='https://virtualenv.pypa.io/',\n    license='MIT',\n    py_modules=['virtualenv'],\n    packages=['virtualenv_support'],\n    package_data={'virtualenv_support': ['*.whl']},\n    python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*',\n    **setup_params)\n", "path": "setup.py"}]}