We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Remove "rednose" dependency?
The changeset 91ee85152 (first released as 0.10.0) added a hard dependency on "rednose".

The package "rednose" (0.4.3) appears to be an extension to nosetests that adds colors to the console output.  It depends on "python-termstyle" (0.1.7), which was not installable this morning.

These dependencies are not declared in the MongoEngine documentation, either as "Dependencies" or "Optional Dependencies".  They're not declared to "pip" (setuptools?), either, so it takes a bit of searching just to figure out where this dependency is coming from.  They are not required for any MongoEngine functionality.  Their presence is not even seen by most users.

The "gfxmonk.net" web server (which python-termstyle downloads from, even when using Pip) was down today, so this dependency killed our ability to deploy any new programs that use MongoEngine 0.10.0.  Maybe that means I need a more sophisticated deployment system (no argument there!), but it seems like this dependency has big risk, with minimal gain.

Of course, developers are always free to install their own developer tools (like "rednose") on their own.  It's just odd to require this particular one, in an undocumented and somewhat obscure way, for every mongoengine installation.


--- 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 sys
3 from setuptools import setup, find_packages
4 
5 # Hack to silence atexit traceback in newer python versions
6 try:
7     import multiprocessing
8 except ImportError:
9     pass
10 
11 DESCRIPTION = 'MongoEngine is a Python Object-Document ' + \
12 'Mapper for working with MongoDB.'
13 LONG_DESCRIPTION = None
14 try:
15     LONG_DESCRIPTION = open('README.rst').read()
16 except:
17     pass
18 
19 
20 def get_version(version_tuple):
21     if not isinstance(version_tuple[-1], int):
22         return '.'.join(map(str, version_tuple[:-1])) + version_tuple[-1]
23     return '.'.join(map(str, version_tuple))
24 
25 # Dirty hack to get version number from monogengine/__init__.py - we can't
26 # import it as it depends on PyMongo and PyMongo isn't installed until this
27 # file is read
28 init = os.path.join(os.path.dirname(__file__), 'mongoengine', '__init__.py')
29 version_line = list(filter(lambda l: l.startswith('VERSION'), open(init)))[0]
30 
31 VERSION = get_version(eval(version_line.split('=')[-1]))
32 
33 CLASSIFIERS = [
34     'Development Status :: 4 - Beta',
35     'Intended Audience :: Developers',
36     'License :: OSI Approved :: MIT License',
37     'Operating System :: OS Independent',
38     'Programming Language :: Python',
39     "Programming Language :: Python :: 2",
40     "Programming Language :: Python :: 2.6",
41     "Programming Language :: Python :: 2.7",
42     "Programming Language :: Python :: 3",
43     "Programming Language :: Python :: 3.2",
44     "Programming Language :: Python :: 3.3",
45     "Programming Language :: Python :: 3.4",
46     "Programming Language :: Python :: Implementation :: CPython",
47     "Programming Language :: Python :: Implementation :: PyPy",
48     'Topic :: Database',
49     'Topic :: Software Development :: Libraries :: Python Modules',
50 ]
51 
52 extra_opts = {"packages": find_packages(exclude=["tests", "tests.*"])}
53 if sys.version_info[0] == 3:
54     extra_opts['use_2to3'] = True
55     extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0']
56     if "test" in sys.argv or "nosetests" in sys.argv:
57         extra_opts['packages'] = find_packages()
58         extra_opts['package_data'] = {"tests": ["fields/mongoengine.png", "fields/mongodb_leaf.png"]}
59 else:
60     # coverage 4 does not support Python 3.2 anymore
61     extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0', 'python-dateutil']
62 
63     if sys.version_info[0] == 2 and sys.version_info[1] == 6:
64         extra_opts['tests_require'].append('unittest2')
65 
66 setup(name='mongoengine',
67       version=VERSION,
68       author='Harry Marr',
69       author_email='harry.marr@{nospam}gmail.com',
70       maintainer="Ross Lawley",
71       maintainer_email="ross.lawley@{nospam}gmail.com",
72       url='http://mongoengine.org/',
73       download_url='https://github.com/MongoEngine/mongoengine/tarball/master',
74       license='MIT',
75       include_package_data=True,
76       description=DESCRIPTION,
77       long_description=LONG_DESCRIPTION,
78       platforms=['any'],
79       classifiers=CLASSIFIERS,
80       install_requires=['pymongo>=2.7.1'],
81       test_suite='nose.collector',
82       setup_requires=['nose', 'rednose'],  # Allow proper nose usage with setuptols and tox
83       **extra_opts
84 )
85
```
--- 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
@@ -52,13 +52,13 @@
 extra_opts = {"packages": find_packages(exclude=["tests", "tests.*"])}
 if sys.version_info[0] == 3:
     extra_opts['use_2to3'] = True
-    extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0']
+    extra_opts['tests_require'] = ['nose', 'rednose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0']
     if "test" in sys.argv or "nosetests" in sys.argv:
         extra_opts['packages'] = find_packages()
         extra_opts['package_data'] = {"tests": ["fields/mongoengine.png", "fields/mongodb_leaf.png"]}
 else:
     # coverage 4 does not support Python 3.2 anymore
-    extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0', 'python-dateutil']
+    extra_opts['tests_require'] = ['nose', 'rednose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0', 'python-dateutil']
 
     if sys.version_info[0] == 2 and sys.version_info[1] == 6:
         extra_opts['tests_require'].append('unittest2')
@@ -79,6 +79,5 @@
       classifiers=CLASSIFIERS,
       install_requires=['pymongo>=2.7.1'],
       test_suite='nose.collector',
-      setup_requires=['nose', 'rednose'],  # Allow proper nose usage with setuptols and tox
       **extra_opts
 )

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -52,13 +52,13 @@\n extra_opts = {\"packages\": find_packages(exclude=[\"tests\", \"tests.*\"])}\n if sys.version_info[0] == 3:\n     extra_opts['use_2to3'] = True\n-    extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0']\n+    extra_opts['tests_require'] = ['nose', 'rednose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0']\n     if \"test\" in sys.argv or \"nosetests\" in sys.argv:\n         extra_opts['packages'] = find_packages()\n         extra_opts['package_data'] = {\"tests\": [\"fields/mongoengine.png\", \"fields/mongodb_leaf.png\"]}\n else:\n     # coverage 4 does not support Python 3.2 anymore\n-    extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0', 'python-dateutil']\n+    extra_opts['tests_require'] = ['nose', 'rednose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0', 'python-dateutil']\n \n     if sys.version_info[0] == 2 and sys.version_info[1] == 6:\n         extra_opts['tests_require'].append('unittest2')\n@@ -79,6 +79,5 @@\n       classifiers=CLASSIFIERS,\n       install_requires=['pymongo>=2.7.1'],\n       test_suite='nose.collector',\n-      setup_requires=['nose', 'rednose'],  # Allow proper nose usage with setuptols and tox\n       **extra_opts\n )\n", "issue": "Remove \"rednose\" dependency?\nThe changeset 91ee85152 (first released as 0.10.0) added a hard dependency on \"rednose\".\n\nThe package \"rednose\" (0.4.3) appears to be an extension to nosetests that adds colors to the console output.  It depends on \"python-termstyle\" (0.1.7), which was not installable this morning.\n\nThese dependencies are not declared in the MongoEngine documentation, either as \"Dependencies\" or \"Optional Dependencies\".  They're not declared to \"pip\" (setuptools?), either, so it takes a bit of searching just to figure out where this dependency is coming from.  They are not required for any MongoEngine functionality.  Their presence is not even seen by most users.\n\nThe \"gfxmonk.net\" web server (which python-termstyle downloads from, even when using Pip) was down today, so this dependency killed our ability to deploy any new programs that use MongoEngine 0.10.0.  Maybe that means I need a more sophisticated deployment system (no argument there!), but it seems like this dependency has big risk, with minimal gain.\n\nOf course, developers are always free to install their own developer tools (like \"rednose\") on their own.  It's just odd to require this particular one, in an undocumented and somewhat obscure way, for every mongoengine installation.\n\n", "before_files": [{"content": "import os\nimport sys\nfrom setuptools import setup, find_packages\n\n# Hack to silence atexit traceback in newer python versions\ntry:\n    import multiprocessing\nexcept ImportError:\n    pass\n\nDESCRIPTION = 'MongoEngine is a Python Object-Document ' + \\\n'Mapper for working with MongoDB.'\nLONG_DESCRIPTION = None\ntry:\n    LONG_DESCRIPTION = open('README.rst').read()\nexcept:\n    pass\n\n\ndef get_version(version_tuple):\n    if not isinstance(version_tuple[-1], int):\n        return '.'.join(map(str, version_tuple[:-1])) + version_tuple[-1]\n    return '.'.join(map(str, version_tuple))\n\n# Dirty hack to get version number from monogengine/__init__.py - we can't\n# import it as it depends on PyMongo and PyMongo isn't installed until this\n# file is read\ninit = os.path.join(os.path.dirname(__file__), 'mongoengine', '__init__.py')\nversion_line = list(filter(lambda l: l.startswith('VERSION'), open(init)))[0]\n\nVERSION = get_version(eval(version_line.split('=')[-1]))\n\nCLASSIFIERS = [\n    'Development Status :: 4 - Beta',\n    'Intended Audience :: Developers',\n    'License :: OSI Approved :: MIT License',\n    'Operating System :: OS Independent',\n    'Programming Language :: Python',\n    \"Programming Language :: Python :: 2\",\n    \"Programming Language :: Python :: 2.6\",\n    \"Programming Language :: Python :: 2.7\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.2\",\n    \"Programming Language :: Python :: 3.3\",\n    \"Programming Language :: Python :: 3.4\",\n    \"Programming Language :: Python :: Implementation :: CPython\",\n    \"Programming Language :: Python :: Implementation :: PyPy\",\n    'Topic :: Database',\n    'Topic :: Software Development :: Libraries :: Python Modules',\n]\n\nextra_opts = {\"packages\": find_packages(exclude=[\"tests\", \"tests.*\"])}\nif sys.version_info[0] == 3:\n    extra_opts['use_2to3'] = True\n    extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0']\n    if \"test\" in sys.argv or \"nosetests\" in sys.argv:\n        extra_opts['packages'] = find_packages()\n        extra_opts['package_data'] = {\"tests\": [\"fields/mongoengine.png\", \"fields/mongodb_leaf.png\"]}\nelse:\n    # coverage 4 does not support Python 3.2 anymore\n    extra_opts['tests_require'] = ['nose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0', 'python-dateutil']\n\n    if sys.version_info[0] == 2 and sys.version_info[1] == 6:\n        extra_opts['tests_require'].append('unittest2')\n\nsetup(name='mongoengine',\n      version=VERSION,\n      author='Harry Marr',\n      author_email='harry.marr@{nospam}gmail.com',\n      maintainer=\"Ross Lawley\",\n      maintainer_email=\"ross.lawley@{nospam}gmail.com\",\n      url='http://mongoengine.org/',\n      download_url='https://github.com/MongoEngine/mongoengine/tarball/master',\n      license='MIT',\n      include_package_data=True,\n      description=DESCRIPTION,\n      long_description=LONG_DESCRIPTION,\n      platforms=['any'],\n      classifiers=CLASSIFIERS,\n      install_requires=['pymongo>=2.7.1'],\n      test_suite='nose.collector',\n      setup_requires=['nose', 'rednose'],  # Allow proper nose usage with setuptols and tox\n      **extra_opts\n)\n", "path": "setup.py"}], "after_files": [{"content": "import os\nimport sys\nfrom setuptools import setup, find_packages\n\n# Hack to silence atexit traceback in newer python versions\ntry:\n    import multiprocessing\nexcept ImportError:\n    pass\n\nDESCRIPTION = 'MongoEngine is a Python Object-Document ' + \\\n'Mapper for working with MongoDB.'\nLONG_DESCRIPTION = None\ntry:\n    LONG_DESCRIPTION = open('README.rst').read()\nexcept:\n    pass\n\n\ndef get_version(version_tuple):\n    if not isinstance(version_tuple[-1], int):\n        return '.'.join(map(str, version_tuple[:-1])) + version_tuple[-1]\n    return '.'.join(map(str, version_tuple))\n\n# Dirty hack to get version number from monogengine/__init__.py - we can't\n# import it as it depends on PyMongo and PyMongo isn't installed until this\n# file is read\ninit = os.path.join(os.path.dirname(__file__), 'mongoengine', '__init__.py')\nversion_line = list(filter(lambda l: l.startswith('VERSION'), open(init)))[0]\n\nVERSION = get_version(eval(version_line.split('=')[-1]))\n\nCLASSIFIERS = [\n    'Development Status :: 4 - Beta',\n    'Intended Audience :: Developers',\n    'License :: OSI Approved :: MIT License',\n    'Operating System :: OS Independent',\n    'Programming Language :: Python',\n    \"Programming Language :: Python :: 2\",\n    \"Programming Language :: Python :: 2.6\",\n    \"Programming Language :: Python :: 2.7\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.2\",\n    \"Programming Language :: Python :: 3.3\",\n    \"Programming Language :: Python :: 3.4\",\n    \"Programming Language :: Python :: Implementation :: CPython\",\n    \"Programming Language :: Python :: Implementation :: PyPy\",\n    'Topic :: Database',\n    'Topic :: Software Development :: Libraries :: Python Modules',\n]\n\nextra_opts = {\"packages\": find_packages(exclude=[\"tests\", \"tests.*\"])}\nif sys.version_info[0] == 3:\n    extra_opts['use_2to3'] = True\n    extra_opts['tests_require'] = ['nose', 'rednose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0']\n    if \"test\" in sys.argv or \"nosetests\" in sys.argv:\n        extra_opts['packages'] = find_packages()\n        extra_opts['package_data'] = {\"tests\": [\"fields/mongoengine.png\", \"fields/mongodb_leaf.png\"]}\nelse:\n    # coverage 4 does not support Python 3.2 anymore\n    extra_opts['tests_require'] = ['nose', 'rednose', 'coverage==3.7.1', 'blinker', 'Pillow>=2.0.0', 'python-dateutil']\n\n    if sys.version_info[0] == 2 and sys.version_info[1] == 6:\n        extra_opts['tests_require'].append('unittest2')\n\nsetup(name='mongoengine',\n      version=VERSION,\n      author='Harry Marr',\n      author_email='harry.marr@{nospam}gmail.com',\n      maintainer=\"Ross Lawley\",\n      maintainer_email=\"ross.lawley@{nospam}gmail.com\",\n      url='http://mongoengine.org/',\n      download_url='https://github.com/MongoEngine/mongoengine/tarball/master',\n      license='MIT',\n      include_package_data=True,\n      description=DESCRIPTION,\n      long_description=LONG_DESCRIPTION,\n      platforms=['any'],\n      classifiers=CLASSIFIERS,\n      install_requires=['pymongo>=2.7.1'],\n      test_suite='nose.collector',\n      **extra_opts\n)\n", "path": "setup.py"}]}