We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
do we really need 'redis>=2.7.0,<2.9.0' ?
Hi

Recently I was trying to use sentry with [django-redis](https://github.com/niwibe/django-redis) as a cache backend and this can't be (easily) done with current versions of both django-redis and sentry since django-redis has a restriction for [redis>=2.10.0](https://github.com/niwibe/django-redis/blob/fcfd73d85d4fc3350d9cdacdb08546a5f4c9a66d/setup.py#L21). 
A simple installation shows that sentry works fine with `redis==2.10.3` but I guess this would need a more thorough tests. 

I briefly checked redis-py changelog and it seems the only possible backwards incompatible change is [this](https://github.com/andymccurdy/redis-py/blob/54e1040b576afb4155bf839483428c5edac14df0/CHANGES#L9-L15). Also I noticed that current version of sentry has a builtin redis cache backend, but it doesn't seem to cover other potential apps installed within the project. 

I also posted similar issue on niwibe/django-redis#113.


--- 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 """
3 Sentry
4 ======
5 
6 Sentry is a realtime event logging and aggregation platform. It specializes
7 in monitoring errors and extracting all the information needed to do a proper
8 post-mortem without any of the hassle of the standard user feedback loop.
9 
10 Sentry is a Server
11 ------------------
12 
13 The Sentry package, at its core, is just a simple server and web UI. It will
14 handle authentication clients (such as `Raven <https://github.com/getsentry/raven-python>`_)
15 and all of the logic behind storage and aggregation.
16 
17 That said, Sentry is not limited to Python. The primary implementation is in
18 Python, but it contains a full API for sending events from any language, in
19 any application.
20 
21 :copyright: (c) 2011-2014 by the Sentry Team, see AUTHORS for more details.
22 :license: BSD, see LICENSE for more details.
23 """
24 
25 from setuptools import setup, find_packages
26 from setuptools.command.test import test as TestCommand
27 import sys
28 
29 
30 # Hack to prevent stupid "TypeError: 'NoneType' object is not callable" error
31 # in multiprocessing/util.py _exit_function when running `python
32 # setup.py test` (see
33 # http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)
34 for m in ('multiprocessing', 'billiard'):
35     try:
36         __import__(m)
37     except ImportError:
38         pass
39 
40 setup_requires = []
41 
42 if 'test' in sys.argv:
43     setup_requires.append('pytest')
44 
45 dev_requires = [
46     'flake8>=2.0,<2.1',
47 ]
48 
49 tests_require = [
50     'casscache',
51     'cqlsh',
52     'elasticsearch',
53     'exam>=0.5.1',
54     'eventlet',
55     'httpretty',
56     'pytest',
57     'pytest-cov>=1.4',
58     'pytest-django',
59     'pytest-timeout',
60     'python-coveralls',
61     'mock>=0.8.0',
62     'riak',
63     'unittest2',
64 ]
65 
66 
67 install_requires = [
68     'BeautifulSoup>=3.2.1,<3.3.0',
69     'celery>=3.0.15,<3.1.0',
70     'cssutils>=0.9.9,<0.10.0',
71     'Django>=1.5.8,<1.6',
72     'django-bitfield>=1.7.0,<1.8.0',
73     'django-celery>=3.0.11,<3.1.0',
74     'django-crispy-forms>=1.2.3,<1.3.0',
75     'django-paging>=0.2.5,<0.3.0',
76     'django-picklefield>=0.3.0,<0.4.0',
77     'django-recaptcha>=1.0.0,<1.1.0',
78     'django-social-auth>=0.7.28,<0.8.0',
79     'django-static-compiler>=0.3.0,<0.4.0',
80     'django-statsd-mozilla>=0.3.8.0,<0.3.9.0',
81     'django-sudo>=1.1.0,<1.2.0',
82     'django-templatetag-sugar>=0.1.0',
83     'djangorestframework>=2.3.8,<2.4.0',
84     'email-reply-parser>=0.2.0,<0.3.0',
85     'enum34>=0.9.18,<0.10.0',
86     'gunicorn>=0.17.2,<0.18.0',
87     'ipaddr>=2.1.11,<2.2.0',
88     'logan>=0.5.8.2,<0.6.0',
89     'nydus>=0.10.7,<0.11.0',
90     'progressbar>=2.2,<2.4',
91     'Pygments>=1.6.0,<1.7.0',
92     'python-dateutil>=1.5.0,<2.0.0',
93     'python-memcached>=1.53,<2.0.0',
94     'raven>=5.0.0',
95     'redis>=2.7.0,<2.9.0',
96     'simplejson>=3.1.0,<3.4.0',
97     'six>=1.6.0,<2.0.0',
98     'setproctitle>=1.1.7,<1.2.0',
99     'South==1.0.1',
100     'toronado>=0.0.4,<0.1.0',
101     'ua-parser>=0.3.5',
102     'urllib3>=1.7.1,<1.8.0',
103 ]
104 
105 postgres_requires = [
106     'psycopg2>=2.5.0,<2.6.0',
107 ]
108 
109 postgres_pypy_requires = [
110     'psycopg2cffi',
111 ]
112 
113 mysql_requires = [
114     'MySQL-python>=1.2.0,<1.3.0',
115 ]
116 
117 
118 class PyTest(TestCommand):
119     def finalize_options(self):
120         TestCommand.finalize_options(self)
121         self.test_args = ['tests']
122         self.test_suite = True
123 
124     def run_tests(self):
125         # import here, cause outside the eggs aren't loaded
126         import pytest
127         errno = pytest.main(self.test_args)
128         sys.exit(errno)
129 
130 
131 setup(
132     name='sentry',
133     version='7.0.0-DEV',
134     author='David Cramer',
135     author_email='dcramer@gmail.com',
136     url='https://www.getsentry.com',
137     description='A realtime logging and aggregation server.',
138     long_description=open('README.rst').read(),
139     package_dir={'': 'src'},
140     packages=find_packages('src'),
141     zip_safe=False,
142     install_requires=install_requires,
143     extras_require={
144         'tests': tests_require,
145         'dev': dev_requires,
146         'postgres': install_requires + postgres_requires,
147         'postgres_pypy': install_requires + postgres_pypy_requires,
148         'mysql': install_requires + mysql_requires,
149     },
150     tests_require=tests_require,
151     cmdclass={'test': PyTest},
152     license='BSD',
153     include_package_data=True,
154     entry_points={
155         'console_scripts': [
156             'sentry = sentry.utils.runner:main',
157         ],
158     },
159     classifiers=[
160         'Framework :: Django',
161         'Intended Audience :: Developers',
162         'Intended Audience :: System Administrators',
163         'Operating System :: OS Independent',
164         'Topic :: Software Development'
165     ],
166 )
167
```
--- 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
@@ -92,7 +92,7 @@
     'python-dateutil>=1.5.0,<2.0.0',
     'python-memcached>=1.53,<2.0.0',
     'raven>=5.0.0',
-    'redis>=2.7.0,<2.9.0',
+    'redis>=2.7.0,<2.11.0',
     'simplejson>=3.1.0,<3.4.0',
     'six>=1.6.0,<2.0.0',
     'setproctitle>=1.1.7,<1.2.0',

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -92,7 +92,7 @@\n     'python-dateutil>=1.5.0,<2.0.0',\n     'python-memcached>=1.53,<2.0.0',\n     'raven>=5.0.0',\n-    'redis>=2.7.0,<2.9.0',\n+    'redis>=2.7.0,<2.11.0',\n     'simplejson>=3.1.0,<3.4.0',\n     'six>=1.6.0,<2.0.0',\n     'setproctitle>=1.1.7,<1.2.0',\n", "issue": "do we really need 'redis>=2.7.0,<2.9.0' ?\nHi\n\nRecently I was trying to use sentry with [django-redis](https://github.com/niwibe/django-redis) as a cache backend and this can't be (easily) done with current versions of both django-redis and sentry since django-redis has a restriction for [redis>=2.10.0](https://github.com/niwibe/django-redis/blob/fcfd73d85d4fc3350d9cdacdb08546a5f4c9a66d/setup.py#L21). \nA simple installation shows that sentry works fine with `redis==2.10.3` but I guess this would need a more thorough tests. \n\nI briefly checked redis-py changelog and it seems the only possible backwards incompatible change is [this](https://github.com/andymccurdy/redis-py/blob/54e1040b576afb4155bf839483428c5edac14df0/CHANGES#L9-L15). Also I noticed that current version of sentry has a builtin redis cache backend, but it doesn't seem to cover other potential apps installed within the project. \n\nI also posted similar issue on niwibe/django-redis#113.\n\n", "before_files": [{"content": "#!/usr/bin/env python\n\"\"\"\nSentry\n======\n\nSentry is a realtime event logging and aggregation platform. It specializes\nin monitoring errors and extracting all the information needed to do a proper\npost-mortem without any of the hassle of the standard user feedback loop.\n\nSentry is a Server\n------------------\n\nThe Sentry package, at its core, is just a simple server and web UI. It will\nhandle authentication clients (such as `Raven <https://github.com/getsentry/raven-python>`_)\nand all of the logic behind storage and aggregation.\n\nThat said, Sentry is not limited to Python. The primary implementation is in\nPython, but it contains a full API for sending events from any language, in\nany application.\n\n:copyright: (c) 2011-2014 by the Sentry Team, see AUTHORS for more details.\n:license: BSD, see LICENSE for more details.\n\"\"\"\n\nfrom setuptools import setup, find_packages\nfrom setuptools.command.test import test as TestCommand\nimport sys\n\n\n# Hack to prevent stupid \"TypeError: 'NoneType' object is not callable\" error\n# in multiprocessing/util.py _exit_function when running `python\n# setup.py test` (see\n# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)\nfor m in ('multiprocessing', 'billiard'):\n    try:\n        __import__(m)\n    except ImportError:\n        pass\n\nsetup_requires = []\n\nif 'test' in sys.argv:\n    setup_requires.append('pytest')\n\ndev_requires = [\n    'flake8>=2.0,<2.1',\n]\n\ntests_require = [\n    'casscache',\n    'cqlsh',\n    'elasticsearch',\n    'exam>=0.5.1',\n    'eventlet',\n    'httpretty',\n    'pytest',\n    'pytest-cov>=1.4',\n    'pytest-django',\n    'pytest-timeout',\n    'python-coveralls',\n    'mock>=0.8.0',\n    'riak',\n    'unittest2',\n]\n\n\ninstall_requires = [\n    'BeautifulSoup>=3.2.1,<3.3.0',\n    'celery>=3.0.15,<3.1.0',\n    'cssutils>=0.9.9,<0.10.0',\n    'Django>=1.5.8,<1.6',\n    'django-bitfield>=1.7.0,<1.8.0',\n    'django-celery>=3.0.11,<3.1.0',\n    'django-crispy-forms>=1.2.3,<1.3.0',\n    'django-paging>=0.2.5,<0.3.0',\n    'django-picklefield>=0.3.0,<0.4.0',\n    'django-recaptcha>=1.0.0,<1.1.0',\n    'django-social-auth>=0.7.28,<0.8.0',\n    'django-static-compiler>=0.3.0,<0.4.0',\n    'django-statsd-mozilla>=0.3.8.0,<0.3.9.0',\n    'django-sudo>=1.1.0,<1.2.0',\n    'django-templatetag-sugar>=0.1.0',\n    'djangorestframework>=2.3.8,<2.4.0',\n    'email-reply-parser>=0.2.0,<0.3.0',\n    'enum34>=0.9.18,<0.10.0',\n    'gunicorn>=0.17.2,<0.18.0',\n    'ipaddr>=2.1.11,<2.2.0',\n    'logan>=0.5.8.2,<0.6.0',\n    'nydus>=0.10.7,<0.11.0',\n    'progressbar>=2.2,<2.4',\n    'Pygments>=1.6.0,<1.7.0',\n    'python-dateutil>=1.5.0,<2.0.0',\n    'python-memcached>=1.53,<2.0.0',\n    'raven>=5.0.0',\n    'redis>=2.7.0,<2.9.0',\n    'simplejson>=3.1.0,<3.4.0',\n    'six>=1.6.0,<2.0.0',\n    'setproctitle>=1.1.7,<1.2.0',\n    'South==1.0.1',\n    'toronado>=0.0.4,<0.1.0',\n    'ua-parser>=0.3.5',\n    'urllib3>=1.7.1,<1.8.0',\n]\n\npostgres_requires = [\n    'psycopg2>=2.5.0,<2.6.0',\n]\n\npostgres_pypy_requires = [\n    'psycopg2cffi',\n]\n\nmysql_requires = [\n    'MySQL-python>=1.2.0,<1.3.0',\n]\n\n\nclass PyTest(TestCommand):\n    def finalize_options(self):\n        TestCommand.finalize_options(self)\n        self.test_args = ['tests']\n        self.test_suite = True\n\n    def run_tests(self):\n        # import here, cause outside the eggs aren't loaded\n        import pytest\n        errno = pytest.main(self.test_args)\n        sys.exit(errno)\n\n\nsetup(\n    name='sentry',\n    version='7.0.0-DEV',\n    author='David Cramer',\n    author_email='dcramer@gmail.com',\n    url='https://www.getsentry.com',\n    description='A realtime logging and aggregation server.',\n    long_description=open('README.rst').read(),\n    package_dir={'': 'src'},\n    packages=find_packages('src'),\n    zip_safe=False,\n    install_requires=install_requires,\n    extras_require={\n        'tests': tests_require,\n        'dev': dev_requires,\n        'postgres': install_requires + postgres_requires,\n        'postgres_pypy': install_requires + postgres_pypy_requires,\n        'mysql': install_requires + mysql_requires,\n    },\n    tests_require=tests_require,\n    cmdclass={'test': PyTest},\n    license='BSD',\n    include_package_data=True,\n    entry_points={\n        'console_scripts': [\n            'sentry = sentry.utils.runner:main',\n        ],\n    },\n    classifiers=[\n        'Framework :: Django',\n        'Intended Audience :: Developers',\n        'Intended Audience :: System Administrators',\n        'Operating System :: OS Independent',\n        'Topic :: Software Development'\n    ],\n)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python\n\"\"\"\nSentry\n======\n\nSentry is a realtime event logging and aggregation platform. It specializes\nin monitoring errors and extracting all the information needed to do a proper\npost-mortem without any of the hassle of the standard user feedback loop.\n\nSentry is a Server\n------------------\n\nThe Sentry package, at its core, is just a simple server and web UI. It will\nhandle authentication clients (such as `Raven <https://github.com/getsentry/raven-python>`_)\nand all of the logic behind storage and aggregation.\n\nThat said, Sentry is not limited to Python. The primary implementation is in\nPython, but it contains a full API for sending events from any language, in\nany application.\n\n:copyright: (c) 2011-2014 by the Sentry Team, see AUTHORS for more details.\n:license: BSD, see LICENSE for more details.\n\"\"\"\n\nfrom setuptools import setup, find_packages\nfrom setuptools.command.test import test as TestCommand\nimport sys\n\n\n# Hack to prevent stupid \"TypeError: 'NoneType' object is not callable\" error\n# in multiprocessing/util.py _exit_function when running `python\n# setup.py test` (see\n# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html)\nfor m in ('multiprocessing', 'billiard'):\n    try:\n        __import__(m)\n    except ImportError:\n        pass\n\nsetup_requires = []\n\nif 'test' in sys.argv:\n    setup_requires.append('pytest')\n\ndev_requires = [\n    'flake8>=2.0,<2.1',\n]\n\ntests_require = [\n    'casscache',\n    'cqlsh',\n    'elasticsearch',\n    'exam>=0.5.1',\n    'eventlet',\n    'httpretty',\n    'pytest',\n    'pytest-cov>=1.4',\n    'pytest-django',\n    'pytest-timeout',\n    'python-coveralls',\n    'mock>=0.8.0',\n    'riak',\n    'unittest2',\n]\n\n\ninstall_requires = [\n    'BeautifulSoup>=3.2.1,<3.3.0',\n    'celery>=3.0.15,<3.1.0',\n    'cssutils>=0.9.9,<0.10.0',\n    'Django>=1.5.8,<1.6',\n    'django-bitfield>=1.7.0,<1.8.0',\n    'django-celery>=3.0.11,<3.1.0',\n    'django-crispy-forms>=1.2.3,<1.3.0',\n    'django-paging>=0.2.5,<0.3.0',\n    'django-picklefield>=0.3.0,<0.4.0',\n    'django-recaptcha>=1.0.0,<1.1.0',\n    'django-social-auth>=0.7.28,<0.8.0',\n    'django-static-compiler>=0.3.0,<0.4.0',\n    'django-statsd-mozilla>=0.3.8.0,<0.3.9.0',\n    'django-sudo>=1.1.0,<1.2.0',\n    'django-templatetag-sugar>=0.1.0',\n    'djangorestframework>=2.3.8,<2.4.0',\n    'email-reply-parser>=0.2.0,<0.3.0',\n    'enum34>=0.9.18,<0.10.0',\n    'gunicorn>=0.17.2,<0.18.0',\n    'ipaddr>=2.1.11,<2.2.0',\n    'logan>=0.5.8.2,<0.6.0',\n    'nydus>=0.10.7,<0.11.0',\n    'progressbar>=2.2,<2.4',\n    'Pygments>=1.6.0,<1.7.0',\n    'python-dateutil>=1.5.0,<2.0.0',\n    'python-memcached>=1.53,<2.0.0',\n    'raven>=5.0.0',\n    'redis>=2.7.0,<2.11.0',\n    'simplejson>=3.1.0,<3.4.0',\n    'six>=1.6.0,<2.0.0',\n    'setproctitle>=1.1.7,<1.2.0',\n    'South==1.0.1',\n    'toronado>=0.0.4,<0.1.0',\n    'ua-parser>=0.3.5',\n    'urllib3>=1.7.1,<1.8.0',\n]\n\npostgres_requires = [\n    'psycopg2>=2.5.0,<2.6.0',\n]\n\npostgres_pypy_requires = [\n    'psycopg2cffi',\n]\n\nmysql_requires = [\n    'MySQL-python>=1.2.0,<1.3.0',\n]\n\n\nclass PyTest(TestCommand):\n    def finalize_options(self):\n        TestCommand.finalize_options(self)\n        self.test_args = ['tests']\n        self.test_suite = True\n\n    def run_tests(self):\n        # import here, cause outside the eggs aren't loaded\n        import pytest\n        errno = pytest.main(self.test_args)\n        sys.exit(errno)\n\n\nsetup(\n    name='sentry',\n    version='7.0.0-DEV',\n    author='David Cramer',\n    author_email='dcramer@gmail.com',\n    url='https://www.getsentry.com',\n    description='A realtime logging and aggregation server.',\n    long_description=open('README.rst').read(),\n    package_dir={'': 'src'},\n    packages=find_packages('src'),\n    zip_safe=False,\n    install_requires=install_requires,\n    extras_require={\n        'tests': tests_require,\n        'dev': dev_requires,\n        'postgres': install_requires + postgres_requires,\n        'postgres_pypy': install_requires + postgres_pypy_requires,\n        'mysql': install_requires + mysql_requires,\n    },\n    tests_require=tests_require,\n    cmdclass={'test': PyTest},\n    license='BSD',\n    include_package_data=True,\n    entry_points={\n        'console_scripts': [\n            'sentry = sentry.utils.runner:main',\n        ],\n    },\n    classifiers=[\n        'Framework :: Django',\n        'Intended Audience :: Developers',\n        'Intended Audience :: System Administrators',\n        'Operating System :: OS Independent',\n        'Topic :: Software Development'\n    ],\n)\n", "path": "setup.py"}]}