We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Python3.3 support and requirements without it
Scrapy still supports py3.3 (at least according to its trove classifiers in setup.py and the CI conf)
but some of its dependencies dropped support some time ago.
https://github.com/pyca/service_identity/blob/master/CHANGELOG.rst#backward-incompatible-changes-1
https://github.com/pyca/cryptography/blob/master/CHANGELOG.rst#20---2017-07-17

This caused some problems when testing scrapy daemon with py3.3,
which was resolved by installing the [enum-compat virtual package](https://pypi.python.org/pypi/enum-compat/0.0.2)

There are several options here.
scrapy1.5 can drop support for python3.3,
scrapy1.4 can restrict the max versions for those dependencies
and enum-compat can become a requirement,
although there may be more things broken.

I didn't figure out why the python3.3 build for scrapy doesn't fail
but here is a failed scrapyd build https://travis-ci.org/scrapy/scrapyd/jobs/299029712

--- 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 from os.path import dirname, join
2 from pkg_resources import parse_version
3 from setuptools import setup, find_packages, __version__ as setuptools_version
4 
5 
6 with open(join(dirname(__file__), 'scrapy/VERSION'), 'rb') as f:
7     version = f.read().decode('ascii').strip()
8 
9 
10 def has_environment_marker_platform_impl_support():
11     """Code extracted from 'pytest/setup.py'
12     https://github.com/pytest-dev/pytest/blob/7538680c/setup.py#L31
13 
14     The first known release to support environment marker with range operators
15     it is 18.5, see:
16     https://setuptools.readthedocs.io/en/latest/history.html#id235
17     """
18     return parse_version(setuptools_version) >= parse_version('18.5')
19 
20 
21 extras_require = {}
22 
23 if has_environment_marker_platform_impl_support():
24     extras_require[':platform_python_implementation == "PyPy"'] = [
25         'PyPyDispatcher>=2.1.0',
26     ]
27 
28 
29 setup(
30     name='Scrapy',
31     version=version,
32     url='https://scrapy.org',
33     description='A high-level Web Crawling and Web Scraping framework',
34     long_description=open('README.rst').read(),
35     author='Scrapy developers',
36     maintainer='Pablo Hoffman',
37     maintainer_email='pablo@pablohoffman.com',
38     license='BSD',
39     packages=find_packages(exclude=('tests', 'tests.*')),
40     include_package_data=True,
41     zip_safe=False,
42     entry_points={
43         'console_scripts': ['scrapy = scrapy.cmdline:execute']
44     },
45     classifiers=[
46         'Framework :: Scrapy',
47         'Development Status :: 5 - Production/Stable',
48         'Environment :: Console',
49         'Intended Audience :: Developers',
50         'License :: OSI Approved :: BSD License',
51         'Operating System :: OS Independent',
52         'Programming Language :: Python',
53         'Programming Language :: Python :: 2',
54         'Programming Language :: Python :: 2.7',
55         'Programming Language :: Python :: 3',
56         'Programming Language :: Python :: 3.3',
57         'Programming Language :: Python :: 3.4',
58         'Programming Language :: Python :: 3.5',
59         'Programming Language :: Python :: 3.6',
60         'Topic :: Internet :: WWW/HTTP',
61         'Topic :: Software Development :: Libraries :: Application Frameworks',
62         'Topic :: Software Development :: Libraries :: Python Modules',
63     ],
64     install_requires=[
65         'Twisted>=13.1.0',
66         'w3lib>=1.17.0',
67         'queuelib',
68         'lxml',
69         'pyOpenSSL',
70         'cssselect>=0.9',
71         'six>=1.5.2',
72         'parsel>=1.1',
73         'PyDispatcher>=2.0.5',
74         'service_identity',
75     ],
76     extras_require=extras_require,
77 )
78
```
--- 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
@@ -53,7 +53,6 @@
         'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.3',
         'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
@@ -61,6 +60,7 @@
         'Topic :: Software Development :: Libraries :: Application Frameworks',
         'Topic :: Software Development :: Libraries :: Python Modules',
     ],
+    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
     install_requires=[
         'Twisted>=13.1.0',
         'w3lib>=1.17.0',

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -53,7 +53,6 @@\n         'Programming Language :: Python :: 2',\n         'Programming Language :: Python :: 2.7',\n         'Programming Language :: Python :: 3',\n-        'Programming Language :: Python :: 3.3',\n         'Programming Language :: Python :: 3.4',\n         'Programming Language :: Python :: 3.5',\n         'Programming Language :: Python :: 3.6',\n@@ -61,6 +60,7 @@\n         'Topic :: Software Development :: Libraries :: Application Frameworks',\n         'Topic :: Software Development :: Libraries :: Python Modules',\n     ],\n+    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',\n     install_requires=[\n         'Twisted>=13.1.0',\n         'w3lib>=1.17.0',\n", "issue": "Python3.3 support and requirements without it\nScrapy still supports py3.3 (at least according to its trove classifiers in setup.py and the CI conf)\r\nbut some of its dependencies dropped support some time ago.\r\nhttps://github.com/pyca/service_identity/blob/master/CHANGELOG.rst#backward-incompatible-changes-1\r\nhttps://github.com/pyca/cryptography/blob/master/CHANGELOG.rst#20---2017-07-17\r\n\r\nThis caused some problems when testing scrapy daemon with py3.3,\r\nwhich was resolved by installing the [enum-compat virtual package](https://pypi.python.org/pypi/enum-compat/0.0.2)\r\n\r\nThere are several options here.\r\nscrapy1.5 can drop support for python3.3,\r\nscrapy1.4 can restrict the max versions for those dependencies\r\nand enum-compat can become a requirement,\r\nalthough there may be more things broken.\r\n\r\nI didn't figure out why the python3.3 build for scrapy doesn't fail\r\nbut here is a failed scrapyd build https://travis-ci.org/scrapy/scrapyd/jobs/299029712\n", "before_files": [{"content": "from os.path import dirname, join\nfrom pkg_resources import parse_version\nfrom setuptools import setup, find_packages, __version__ as setuptools_version\n\n\nwith open(join(dirname(__file__), 'scrapy/VERSION'), 'rb') as f:\n    version = f.read().decode('ascii').strip()\n\n\ndef has_environment_marker_platform_impl_support():\n    \"\"\"Code extracted from 'pytest/setup.py'\n    https://github.com/pytest-dev/pytest/blob/7538680c/setup.py#L31\n\n    The first known release to support environment marker with range operators\n    it is 18.5, see:\n    https://setuptools.readthedocs.io/en/latest/history.html#id235\n    \"\"\"\n    return parse_version(setuptools_version) >= parse_version('18.5')\n\n\nextras_require = {}\n\nif has_environment_marker_platform_impl_support():\n    extras_require[':platform_python_implementation == \"PyPy\"'] = [\n        'PyPyDispatcher>=2.1.0',\n    ]\n\n\nsetup(\n    name='Scrapy',\n    version=version,\n    url='https://scrapy.org',\n    description='A high-level Web Crawling and Web Scraping framework',\n    long_description=open('README.rst').read(),\n    author='Scrapy developers',\n    maintainer='Pablo Hoffman',\n    maintainer_email='pablo@pablohoffman.com',\n    license='BSD',\n    packages=find_packages(exclude=('tests', 'tests.*')),\n    include_package_data=True,\n    zip_safe=False,\n    entry_points={\n        'console_scripts': ['scrapy = scrapy.cmdline:execute']\n    },\n    classifiers=[\n        'Framework :: Scrapy',\n        'Development Status :: 5 - Production/Stable',\n        'Environment :: Console',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: BSD License',\n        'Operating System :: OS Independent',\n        'Programming Language :: Python',\n        'Programming Language :: Python :: 2',\n        'Programming Language :: Python :: 2.7',\n        'Programming Language :: Python :: 3',\n        'Programming Language :: Python :: 3.3',\n        'Programming Language :: Python :: 3.4',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n        'Topic :: Internet :: WWW/HTTP',\n        'Topic :: Software Development :: Libraries :: Application Frameworks',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n    ],\n    install_requires=[\n        'Twisted>=13.1.0',\n        'w3lib>=1.17.0',\n        'queuelib',\n        'lxml',\n        'pyOpenSSL',\n        'cssselect>=0.9',\n        'six>=1.5.2',\n        'parsel>=1.1',\n        'PyDispatcher>=2.0.5',\n        'service_identity',\n    ],\n    extras_require=extras_require,\n)\n", "path": "setup.py"}], "after_files": [{"content": "from os.path import dirname, join\nfrom pkg_resources import parse_version\nfrom setuptools import setup, find_packages, __version__ as setuptools_version\n\n\nwith open(join(dirname(__file__), 'scrapy/VERSION'), 'rb') as f:\n    version = f.read().decode('ascii').strip()\n\n\ndef has_environment_marker_platform_impl_support():\n    \"\"\"Code extracted from 'pytest/setup.py'\n    https://github.com/pytest-dev/pytest/blob/7538680c/setup.py#L31\n\n    The first known release to support environment marker with range operators\n    it is 18.5, see:\n    https://setuptools.readthedocs.io/en/latest/history.html#id235\n    \"\"\"\n    return parse_version(setuptools_version) >= parse_version('18.5')\n\n\nextras_require = {}\n\nif has_environment_marker_platform_impl_support():\n    extras_require[':platform_python_implementation == \"PyPy\"'] = [\n        'PyPyDispatcher>=2.1.0',\n    ]\n\n\nsetup(\n    name='Scrapy',\n    version=version,\n    url='https://scrapy.org',\n    description='A high-level Web Crawling and Web Scraping framework',\n    long_description=open('README.rst').read(),\n    author='Scrapy developers',\n    maintainer='Pablo Hoffman',\n    maintainer_email='pablo@pablohoffman.com',\n    license='BSD',\n    packages=find_packages(exclude=('tests', 'tests.*')),\n    include_package_data=True,\n    zip_safe=False,\n    entry_points={\n        'console_scripts': ['scrapy = scrapy.cmdline:execute']\n    },\n    classifiers=[\n        'Framework :: Scrapy',\n        'Development Status :: 5 - Production/Stable',\n        'Environment :: Console',\n        'Intended Audience :: Developers',\n        'License :: OSI Approved :: BSD License',\n        'Operating System :: OS Independent',\n        'Programming Language :: Python',\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        'Topic :: Internet :: WWW/HTTP',\n        'Topic :: Software Development :: Libraries :: Application Frameworks',\n        'Topic :: Software Development :: Libraries :: Python Modules',\n    ],\n    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',\n    install_requires=[\n        'Twisted>=13.1.0',\n        'w3lib>=1.17.0',\n        'queuelib',\n        'lxml',\n        'pyOpenSSL',\n        'cssselect>=0.9',\n        'six>=1.5.2',\n        'parsel>=1.1',\n        'PyDispatcher>=2.0.5',\n        'service_identity',\n    ],\n    extras_require=extras_require,\n)\n", "path": "setup.py"}]}