prompt: 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()
  
  ```
  
golden_diff: 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
  
verification_info: {"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"}]}