We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
ImportError: cannot import name canonical_filename
Hi, I'm getting an import error on startup:

```
  File "/Users/adaszko/repos/fieldaware/fieldaware-venv/lib/python2.7/site-packages/hypothesis/core.py", line 38, in <module>
    from coverage.files import canonical_filename
ImportError: cannot import name canonical_filename
```

I've downloaded https://files.pythonhosted.org/packages/4b/e4/5ebf3220993de03f2120a16d9e91cfd053f4c11ada0cf033f2bfe9683fcf/hypothesis-3.65.0-py2-none-any.whl and the `METADATA` file there specifies dependency on `coverage` without any version number:

```
% grep coverage METADATA
Requires-Dist: coverage
```

My local `coverage` is at `3.7.1`.  It works if I upgrade `coverage` to `4.4.1`, so I think there's an issue in hypothesis in that it doesn't specify the version bound on `coverage`.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `hypothesis-python/setup.py`
Content:
```
1 # coding=utf-8
2 #
3 # This file is part of Hypothesis, which may be found at
4 # https://github.com/HypothesisWorks/hypothesis-python
5 #
6 # Most of this work is copyright (C) 2013-2018 David R. MacIver
7 # (david@drmaciver.com), but it contains contributions by others. See
8 # CONTRIBUTING.rst for a full list of people who may hold copyright, and
9 # consult the git log if you need to determine who owns an individual
10 # contribution.
11 #
12 # This Source Code Form is subject to the terms of the Mozilla Public License,
13 # v. 2.0. If a copy of the MPL was not distributed with this file, You can
14 # obtain one at http://mozilla.org/MPL/2.0/.
15 #
16 # END HEADER
17 
18 from __future__ import division, print_function, absolute_import
19 
20 import os
21 import sys
22 import warnings
23 
24 import setuptools
25 
26 
27 def local_file(name):
28     return os.path.relpath(os.path.join(os.path.dirname(__file__), name))
29 
30 
31 SOURCE = local_file('src')
32 README = local_file('README.rst')
33 
34 setuptools_version = tuple(map(int, setuptools.__version__.split('.')[:2]))
35 
36 if setuptools_version < (36, 2):
37     # Warning only - very bad if uploading bdist but fine if installing sdist.
38     warnings.warn(
39         'This version of setuptools is too old to correctly store '
40         'conditional dependencies in binary wheels.  For more info, see:  '
41         'https://hynek.me/articles/conditional-python-dependencies/'
42     )
43 
44 
45 # Assignment to placate pyflakes. The actual version is from the exec that
46 # follows.
47 __version__ = None
48 
49 with open(local_file('src/hypothesis/version.py')) as o:
50     exec(o.read())
51 
52 assert __version__ is not None
53 
54 
55 extras = {
56     'datetime': ['pytz'],
57     'pytz': ['pytz'],
58     'dateutil': ['python-dateutil'],
59     'fakefactory': ['Faker>=0.7'],
60     'numpy': ['numpy>=1.9.0'],
61     'pytest': ['pytest>=2.8.0'],
62     # We only support Django versions with upstream support - see
63     # https://www.djangoproject.com/download/#supported-versions
64     'django': ['pytz', 'django>=1.11'],
65 }
66 
67 extras['faker'] = extras['fakefactory']
68 extras['all'] = sorted(sum(extras.values(), []))
69 
70 
71 install_requires = ['attrs>=16.0.0', 'coverage']
72 # Using an environment marker on enum34 makes the dependency condition
73 # independent of the build environemnt, which is important for wheels.
74 # https://www.python.org/dev/peps/pep-0345/#environment-markers
75 if sys.version_info[0] < 3 and setuptools_version < (8, 0):
76     # Except really old systems, where we give up and install unconditionally
77     install_requires.append('enum34')
78 else:
79     install_requires.append('enum34; python_version=="2.7"')
80 
81 
82 setuptools.setup(
83     name='hypothesis',
84     version=__version__,
85     author='David R. MacIver',
86     author_email='david@drmaciver.com',
87     packages=setuptools.find_packages(SOURCE),
88     package_dir={'': SOURCE},
89     package_data={'hypothesis': ['py.typed']},
90     url=(
91         'https://github.com/HypothesisWorks/hypothesis/'
92         'tree/master/hypothesis-python'
93     ),
94     license='MPL v2',
95     description='A library for property based testing',
96     zip_safe=False,
97     extras_require=extras,
98     install_requires=install_requires,
99     python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
100     classifiers=[
101         'Development Status :: 5 - Production/Stable',
102         'Intended Audience :: Developers',
103         'License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)',
104         'Operating System :: Unix',
105         'Operating System :: POSIX',
106         'Operating System :: Microsoft :: Windows',
107         'Programming Language :: Python',
108         'Programming Language :: Python :: 2.7',
109         'Programming Language :: Python :: 3',
110         'Programming Language :: Python :: 3.4',
111         'Programming Language :: Python :: 3.5',
112         'Programming Language :: Python :: 3.6',
113         'Programming Language :: Python :: Implementation :: CPython',
114         'Programming Language :: Python :: Implementation :: PyPy',
115         'Topic :: Software Development :: Testing',
116         'Framework :: Pytest',
117     ],
118     entry_points={
119         'pytest11': ['hypothesispytest = hypothesis.extra.pytestplugin'],
120     },
121     long_description=open(README).read(),
122 )
123
```
--- 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/hypothesis-python/setup.py b/hypothesis-python/setup.py
--- a/hypothesis-python/setup.py
+++ b/hypothesis-python/setup.py
@@ -68,7 +68,7 @@
 extras['all'] = sorted(sum(extras.values(), []))
 
 
-install_requires = ['attrs>=16.0.0', 'coverage']
+install_requires = ['attrs>=16.0.0', 'coverage>=4.0']
 # Using an environment marker on enum34 makes the dependency condition
 # independent of the build environemnt, which is important for wheels.
 # https://www.python.org/dev/peps/pep-0345/#environment-markers

{"golden_diff": "diff --git a/hypothesis-python/setup.py b/hypothesis-python/setup.py\n--- a/hypothesis-python/setup.py\n+++ b/hypothesis-python/setup.py\n@@ -68,7 +68,7 @@\n extras['all'] = sorted(sum(extras.values(), []))\n \n \n-install_requires = ['attrs>=16.0.0', 'coverage']\n+install_requires = ['attrs>=16.0.0', 'coverage>=4.0']\n # Using an environment marker on enum34 makes the dependency condition\n # independent of the build environemnt, which is important for wheels.\n # https://www.python.org/dev/peps/pep-0345/#environment-markers\n", "issue": "ImportError: cannot import name canonical_filename\nHi, I'm getting an import error on startup:\r\n\r\n```\r\n  File \"/Users/adaszko/repos/fieldaware/fieldaware-venv/lib/python2.7/site-packages/hypothesis/core.py\", line 38, in <module>\r\n    from coverage.files import canonical_filename\r\nImportError: cannot import name canonical_filename\r\n```\r\n\r\nI've downloaded https://files.pythonhosted.org/packages/4b/e4/5ebf3220993de03f2120a16d9e91cfd053f4c11ada0cf033f2bfe9683fcf/hypothesis-3.65.0-py2-none-any.whl and the `METADATA` file there specifies dependency on `coverage` without any version number:\r\n\r\n```\r\n% grep coverage METADATA\r\nRequires-Dist: coverage\r\n```\r\n\r\nMy local `coverage` is at `3.7.1`.  It works if I upgrade `coverage` to `4.4.1`, so I think there's an issue in hypothesis in that it doesn't specify the version bound on `coverage`.\n", "before_files": [{"content": "# coding=utf-8\n#\n# This file is part of Hypothesis, which may be found at\n# https://github.com/HypothesisWorks/hypothesis-python\n#\n# Most of this work is copyright (C) 2013-2018 David R. MacIver\n# (david@drmaciver.com), but it contains contributions by others. See\n# CONTRIBUTING.rst for a full list of people who may hold copyright, and\n# consult the git log if you need to determine who owns an individual\n# contribution.\n#\n# This Source Code Form is subject to the terms of the Mozilla Public License,\n# v. 2.0. If a copy of the MPL was not distributed with this file, You can\n# obtain one at http://mozilla.org/MPL/2.0/.\n#\n# END HEADER\n\nfrom __future__ import division, print_function, absolute_import\n\nimport os\nimport sys\nimport warnings\n\nimport setuptools\n\n\ndef local_file(name):\n    return os.path.relpath(os.path.join(os.path.dirname(__file__), name))\n\n\nSOURCE = local_file('src')\nREADME = local_file('README.rst')\n\nsetuptools_version = tuple(map(int, setuptools.__version__.split('.')[:2]))\n\nif setuptools_version < (36, 2):\n    # Warning only - very bad if uploading bdist but fine if installing sdist.\n    warnings.warn(\n        'This version of setuptools is too old to correctly store '\n        'conditional dependencies in binary wheels.  For more info, see:  '\n        'https://hynek.me/articles/conditional-python-dependencies/'\n    )\n\n\n# Assignment to placate pyflakes. The actual version is from the exec that\n# follows.\n__version__ = None\n\nwith open(local_file('src/hypothesis/version.py')) as o:\n    exec(o.read())\n\nassert __version__ is not None\n\n\nextras = {\n    'datetime': ['pytz'],\n    'pytz': ['pytz'],\n    'dateutil': ['python-dateutil'],\n    'fakefactory': ['Faker>=0.7'],\n    'numpy': ['numpy>=1.9.0'],\n    'pytest': ['pytest>=2.8.0'],\n    # We only support Django versions with upstream support - see\n    # https://www.djangoproject.com/download/#supported-versions\n    'django': ['pytz', 'django>=1.11'],\n}\n\nextras['faker'] = extras['fakefactory']\nextras['all'] = sorted(sum(extras.values(), []))\n\n\ninstall_requires = ['attrs>=16.0.0', 'coverage']\n# Using an environment marker on enum34 makes the dependency condition\n# independent of the build environemnt, which is important for wheels.\n# https://www.python.org/dev/peps/pep-0345/#environment-markers\nif sys.version_info[0] < 3 and setuptools_version < (8, 0):\n    # Except really old systems, where we give up and install unconditionally\n    install_requires.append('enum34')\nelse:\n    install_requires.append('enum34; python_version==\"2.7\"')\n\n\nsetuptools.setup(\n    name='hypothesis',\n    version=__version__,\n    author='David R. MacIver',\n    author_email='david@drmaciver.com',\n    packages=setuptools.find_packages(SOURCE),\n    package_dir={'': SOURCE},\n    package_data={'hypothesis': ['py.typed']},\n    url=(\n        'https://github.com/HypothesisWorks/hypothesis/'\n        'tree/master/hypothesis-python'\n    ),\n    license='MPL v2',\n    description='A library for property based testing',\n    zip_safe=False,\n    extras_require=extras,\n    install_requires=install_requires,\n    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',\n    classifiers=[\n        'Development Status :: 5 - Production/Stable',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)',\n        'Operating System :: Unix',\n        'Operating System :: POSIX',\n        'Operating System :: Microsoft :: Windows',\n        'Programming Language :: Python',\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 :: Implementation :: CPython',\n        'Programming Language :: Python :: Implementation :: PyPy',\n        'Topic :: Software Development :: Testing',\n        'Framework :: Pytest',\n    ],\n    entry_points={\n        'pytest11': ['hypothesispytest = hypothesis.extra.pytestplugin'],\n    },\n    long_description=open(README).read(),\n)\n", "path": "hypothesis-python/setup.py"}], "after_files": [{"content": "# coding=utf-8\n#\n# This file is part of Hypothesis, which may be found at\n# https://github.com/HypothesisWorks/hypothesis-python\n#\n# Most of this work is copyright (C) 2013-2018 David R. MacIver\n# (david@drmaciver.com), but it contains contributions by others. See\n# CONTRIBUTING.rst for a full list of people who may hold copyright, and\n# consult the git log if you need to determine who owns an individual\n# contribution.\n#\n# This Source Code Form is subject to the terms of the Mozilla Public License,\n# v. 2.0. If a copy of the MPL was not distributed with this file, You can\n# obtain one at http://mozilla.org/MPL/2.0/.\n#\n# END HEADER\n\nfrom __future__ import division, print_function, absolute_import\n\nimport os\nimport sys\nimport warnings\n\nimport setuptools\n\n\ndef local_file(name):\n    return os.path.relpath(os.path.join(os.path.dirname(__file__), name))\n\n\nSOURCE = local_file('src')\nREADME = local_file('README.rst')\n\nsetuptools_version = tuple(map(int, setuptools.__version__.split('.')[:2]))\n\nif setuptools_version < (36, 2):\n    # Warning only - very bad if uploading bdist but fine if installing sdist.\n    warnings.warn(\n        'This version of setuptools is too old to correctly store '\n        'conditional dependencies in binary wheels.  For more info, see:  '\n        'https://hynek.me/articles/conditional-python-dependencies/'\n    )\n\n\n# Assignment to placate pyflakes. The actual version is from the exec that\n# follows.\n__version__ = None\n\nwith open(local_file('src/hypothesis/version.py')) as o:\n    exec(o.read())\n\nassert __version__ is not None\n\n\nextras = {\n    'datetime': ['pytz'],\n    'pytz': ['pytz'],\n    'dateutil': ['python-dateutil'],\n    'fakefactory': ['Faker>=0.7'],\n    'numpy': ['numpy>=1.9.0'],\n    'pytest': ['pytest>=2.8.0'],\n    # We only support Django versions with upstream support - see\n    # https://www.djangoproject.com/download/#supported-versions\n    'django': ['pytz', 'django>=1.11'],\n}\n\nextras['faker'] = extras['fakefactory']\nextras['all'] = sorted(sum(extras.values(), []))\n\n\ninstall_requires = ['attrs>=16.0.0', 'coverage>=4.0']\n# Using an environment marker on enum34 makes the dependency condition\n# independent of the build environemnt, which is important for wheels.\n# https://www.python.org/dev/peps/pep-0345/#environment-markers\nif sys.version_info[0] < 3 and setuptools_version < (8, 0):\n    # Except really old systems, where we give up and install unconditionally\n    install_requires.append('enum34')\nelse:\n    install_requires.append('enum34; python_version==\"2.7\"')\n\n\nsetuptools.setup(\n    name='hypothesis',\n    version=__version__,\n    author='David R. MacIver',\n    author_email='david@drmaciver.com',\n    packages=setuptools.find_packages(SOURCE),\n    package_dir={'': SOURCE},\n    # package_data={'': ['py.typed']},  # un-comment to release type hints\n    url=(\n        'https://github.com/HypothesisWorks/hypothesis/'\n        'tree/master/hypothesis-python'\n    ),\n    license='MPL v2',\n    description='A library for property based testing',\n    zip_safe=False,\n    extras_require=extras,\n    install_requires=install_requires,\n    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',\n    classifiers=[\n        'Development Status :: 5 - Production/Stable',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)',\n        'Operating System :: Unix',\n        'Operating System :: POSIX',\n        'Operating System :: Microsoft :: Windows',\n        'Programming Language :: Python',\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 :: Implementation :: CPython',\n        'Programming Language :: Python :: Implementation :: PyPy',\n        'Topic :: Software Development :: Testing',\n        'Framework :: Pytest',\n    ],\n    entry_points={\n        'pytest11': ['hypothesispytest = hypothesis.extra.pytestplugin'],\n    },\n    long_description=open(README).read(),\n)\n", "path": "hypothesis-python/setup.py"}]}