prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  setup.py test doesn't include extra_requires from fedmsg deps
  ```
  ======================================================================
  ERROR: Failure: ImportError (No module named psutil)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/home/decause/.virtualenvs/bodhi-python2.7/lib/python2.7/site-packages/nose/loader.py", line 418, in loadTestsFromName
      addr.filename, addr.module)
    File "/home/decause/.virtualenvs/bodhi-python2.7/lib/python2.7/site-packages/nose/importer.py", line 47, in importFromPath
      return self.importFromDir(dir_path, fqname)
    File "/home/decause/.virtualenvs/bodhi-python2.7/lib/python2.7/site-packages/nose/importer.py", line 94, in importFromDir
      mod = load_module(part_fqname, fh, filename, desc)
    File "/home/decause/code/bodhi/bodhi/tests/test_masher.py", line 27, in <module>
      from bodhi.consumers.masher import Masher, MasherThread
    File "/home/decause/code/bodhi/bodhi/consumers/masher.py", line 30, in <module>
      import fedmsg.consumers
    File "/home/decause/code/bodhi/.eggs/fedmsg-0.16.0-py2.7.egg/fedmsg/consumers/__init__.py", line 25, in <module>
      import psutil
  ImportError: No module named psutil
  
  ----------------------------------------------------------------------
  Ran 335 tests in 138.787s
  
  FAILED (errors=1)
  ```
  
  
  --- 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 __main__
  2 __requires__ = __main__.__requires__ = 'WebOb>=1.4.1'
  3 import pkg_resources
  4 
  5 # The following two imports are required to shut up an
  6 # atexit error when running tests with python 2.7
  7 import logging
  8 import multiprocessing
  9 
  10 import os
  11 import sys
  12 
  13 from setuptools import setup, find_packages
  14 
  15 here = os.path.abspath(os.path.dirname(__file__))
  16 README = open(os.path.join(here, 'README.rst')).read()
  17 CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()
  18 
  19 requires = [
  20     'pyramid',
  21     'pyramid_mako',
  22     'pyramid_debugtoolbar',
  23     'pyramid_tm',
  24     'waitress',
  25     'colander',
  26     'cornice',
  27 
  28     'python-openid',
  29     'pyramid_fas_openid',
  30     'packagedb-cli',
  31 
  32     'sqlalchemy',
  33     'zope.sqlalchemy',
  34 
  35     'webhelpers',
  36     'progressbar',
  37 
  38     'bunch',
  39 
  40     # for captchas
  41     'cryptography',
  42     'Pillow',
  43 
  44     # Useful tools
  45     'kitchen',
  46     'python-fedora',
  47     'pylibravatar',
  48     'pyDNS',
  49     'dogpile.cache',
  50     'arrow',
  51     'markdown',
  52 
  53     # i18n, that we're not actually doing yet.
  54     #'Babel',
  55     #'lingua',
  56 
  57     # External resources
  58     'python-bugzilla',
  59     'simplemediawiki',
  60     'fedmsg',
  61 
  62     'Sphinx',
  63 
  64     # For the bodhi-client
  65     'click',
  66 
  67     'WebOb>=1.4.1',
  68     ]
  69 
  70 if sys.version_info[:3] < (2,7,0):
  71     requires.append('importlib')
  72 
  73 if sys.version_info[:3] < (2,5,0):
  74     requires.append('pysqlite')
  75 
  76 setup(name='bodhi',
  77       version='2.0',
  78       description='bodhi',
  79       long_description=README + '\n\n' +  CHANGES,
  80       classifiers=[
  81         "Programming Language :: Python",
  82         "Framework :: Pyramid",
  83         "Topic :: Internet :: WWW/HTTP",
  84         "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
  85         ],
  86       author='',
  87       author_email='',
  88       url='',
  89       keywords='web fedora pyramid',
  90       packages=find_packages(),
  91       include_package_data=True,
  92       zip_safe=False,
  93       install_requires = requires,
  94       tests_require = [
  95           'nose',
  96           'nose-cov',
  97           'webtest',
  98           'mock'
  99       ],
  100       test_suite="nose.collector",
  101       message_extractors = { '.': [
  102           #('**.py', 'lingua_python', None),
  103           #('**.mak', 'lingua_xml', None),
  104       ]},
  105       entry_points = """\
  106       [paste.app_factory]
  107       main = bodhi:main
  108       [console_scripts]
  109       initialize_bodhi_db = bodhi.scripts.initializedb:main
  110       bodhi = bodhi.cli:cli
  111       bodhi-push = bodhi.push:push
  112       bodhi-expire-overrides = bodhi.scripts.expire_overrides:main
  113       [moksha.consumer]
  114       masher = bodhi.consumers.masher:Masher
  115       updates = bodhi.consumers.updates:UpdatesHandler
  116       """,
  117       paster_plugins=['pyramid'],
  118       )
  119 
  120
  ```
  --- 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/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -57,7 +57,9 @@
       # External resources
       'python-bugzilla',
       'simplemediawiki',
  -    'fedmsg',
  +
  +    # "python setup.py test" needs one of fedmsg's setup.py extra_requires
  +    'fedmsg[consumers]',
   
       'Sphinx',
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -57,7 +57,9 @@\n     # External resources\n     'python-bugzilla',\n     'simplemediawiki',\n-    'fedmsg',\n+\n+    # \"python setup.py test\" needs one of fedmsg's setup.py extra_requires\n+    'fedmsg[consumers]',\n \n     'Sphinx',\n", "issue": "setup.py test doesn't include extra_requires from fedmsg deps\n```\n======================================================================\nERROR: Failure: ImportError (No module named psutil)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/home/decause/.virtualenvs/bodhi-python2.7/lib/python2.7/site-packages/nose/loader.py\", line 418, in loadTestsFromName\n    addr.filename, addr.module)\n  File \"/home/decause/.virtualenvs/bodhi-python2.7/lib/python2.7/site-packages/nose/importer.py\", line 47, in importFromPath\n    return self.importFromDir(dir_path, fqname)\n  File \"/home/decause/.virtualenvs/bodhi-python2.7/lib/python2.7/site-packages/nose/importer.py\", line 94, in importFromDir\n    mod = load_module(part_fqname, fh, filename, desc)\n  File \"/home/decause/code/bodhi/bodhi/tests/test_masher.py\", line 27, in <module>\n    from bodhi.consumers.masher import Masher, MasherThread\n  File \"/home/decause/code/bodhi/bodhi/consumers/masher.py\", line 30, in <module>\n    import fedmsg.consumers\n  File \"/home/decause/code/bodhi/.eggs/fedmsg-0.16.0-py2.7.egg/fedmsg/consumers/__init__.py\", line 25, in <module>\n    import psutil\nImportError: No module named psutil\n\n----------------------------------------------------------------------\nRan 335 tests in 138.787s\n\nFAILED (errors=1)\n```\n\n", "before_files": [{"content": "import __main__\n__requires__ = __main__.__requires__ = 'WebOb>=1.4.1'\nimport pkg_resources\n\n# The following two imports are required to shut up an\n# atexit error when running tests with python 2.7\nimport logging\nimport multiprocessing\n\nimport os\nimport sys\n\nfrom setuptools import setup, find_packages\n\nhere = os.path.abspath(os.path.dirname(__file__))\nREADME = open(os.path.join(here, 'README.rst')).read()\nCHANGES = open(os.path.join(here, 'CHANGES.txt')).read()\n\nrequires = [\n    'pyramid',\n    'pyramid_mako',\n    'pyramid_debugtoolbar',\n    'pyramid_tm',\n    'waitress',\n    'colander',\n    'cornice',\n\n    'python-openid',\n    'pyramid_fas_openid',\n    'packagedb-cli',\n\n    'sqlalchemy',\n    'zope.sqlalchemy',\n\n    'webhelpers',\n    'progressbar',\n\n    'bunch',\n\n    # for captchas\n    'cryptography',\n    'Pillow',\n\n    # Useful tools\n    'kitchen',\n    'python-fedora',\n    'pylibravatar',\n    'pyDNS',\n    'dogpile.cache',\n    'arrow',\n    'markdown',\n\n    # i18n, that we're not actually doing yet.\n    #'Babel',\n    #'lingua',\n\n    # External resources\n    'python-bugzilla',\n    'simplemediawiki',\n    'fedmsg',\n\n    'Sphinx',\n\n    # For the bodhi-client\n    'click',\n\n    'WebOb>=1.4.1',\n    ]\n\nif sys.version_info[:3] < (2,7,0):\n    requires.append('importlib')\n\nif sys.version_info[:3] < (2,5,0):\n    requires.append('pysqlite')\n\nsetup(name='bodhi',\n      version='2.0',\n      description='bodhi',\n      long_description=README + '\\n\\n' +  CHANGES,\n      classifiers=[\n        \"Programming Language :: Python\",\n        \"Framework :: Pyramid\",\n        \"Topic :: Internet :: WWW/HTTP\",\n        \"Topic :: Internet :: WWW/HTTP :: WSGI :: Application\",\n        ],\n      author='',\n      author_email='',\n      url='',\n      keywords='web fedora pyramid',\n      packages=find_packages(),\n      include_package_data=True,\n      zip_safe=False,\n      install_requires = requires,\n      tests_require = [\n          'nose',\n          'nose-cov',\n          'webtest',\n          'mock'\n      ],\n      test_suite=\"nose.collector\",\n      message_extractors = { '.': [\n          #('**.py', 'lingua_python', None),\n          #('**.mak', 'lingua_xml', None),\n      ]},\n      entry_points = \"\"\"\\\n      [paste.app_factory]\n      main = bodhi:main\n      [console_scripts]\n      initialize_bodhi_db = bodhi.scripts.initializedb:main\n      bodhi = bodhi.cli:cli\n      bodhi-push = bodhi.push:push\n      bodhi-expire-overrides = bodhi.scripts.expire_overrides:main\n      [moksha.consumer]\n      masher = bodhi.consumers.masher:Masher\n      updates = bodhi.consumers.updates:UpdatesHandler\n      \"\"\",\n      paster_plugins=['pyramid'],\n      )\n\n", "path": "setup.py"}], "after_files": [{"content": "import __main__\n__requires__ = __main__.__requires__ = 'WebOb>=1.4.1'\nimport pkg_resources\n\n# The following two imports are required to shut up an\n# atexit error when running tests with python 2.7\nimport logging\nimport multiprocessing\n\nimport os\nimport sys\n\nfrom setuptools import setup, find_packages\n\nhere = os.path.abspath(os.path.dirname(__file__))\nREADME = open(os.path.join(here, 'README.rst')).read()\nCHANGES = open(os.path.join(here, 'CHANGES.txt')).read()\n\nrequires = [\n    'pyramid',\n    'pyramid_mako',\n    'pyramid_debugtoolbar',\n    'pyramid_tm',\n    'waitress',\n    'colander',\n    'cornice',\n\n    'python-openid',\n    'pyramid_fas_openid',\n    'packagedb-cli',\n\n    'sqlalchemy',\n    'zope.sqlalchemy',\n\n    'webhelpers',\n    'progressbar',\n\n    'bunch',\n\n    # for captchas\n    'cryptography',\n    'Pillow',\n\n    # Useful tools\n    'kitchen',\n    'python-fedora',\n    'pylibravatar',\n    'pyDNS',\n    'dogpile.cache',\n    'arrow',\n    'markdown',\n\n    # i18n, that we're not actually doing yet.\n    #'Babel',\n    #'lingua',\n\n    # External resources\n    'python-bugzilla',\n    'simplemediawiki',\n\n    # \"python setup.py test\" needs one of fedmsg's setup.py extra_requires\n    'fedmsg[consumers]',\n\n    'Sphinx',\n\n    # For the bodhi-client\n    'click',\n\n    'WebOb>=1.4.1',\n    ]\n\nif sys.version_info[:3] < (2,7,0):\n    requires.append('importlib')\n\nif sys.version_info[:3] < (2,5,0):\n    requires.append('pysqlite')\n\nsetup(name='bodhi',\n      version='2.0',\n      description='bodhi',\n      long_description=README + '\\n\\n' +  CHANGES,\n      classifiers=[\n        \"Programming Language :: Python\",\n        \"Framework :: Pyramid\",\n        \"Topic :: Internet :: WWW/HTTP\",\n        \"Topic :: Internet :: WWW/HTTP :: WSGI :: Application\",\n        ],\n      author='',\n      author_email='',\n      url='',\n      keywords='web fedora pyramid',\n      packages=find_packages(),\n      include_package_data=True,\n      zip_safe=False,\n      install_requires = requires,\n      tests_require = [\n          'nose',\n          'nose-cov',\n          'webtest',\n          'mock'\n      ],\n      test_suite=\"nose.collector\",\n      message_extractors = { '.': [\n          #('**.py', 'lingua_python', None),\n          #('**.mak', 'lingua_xml', None),\n      ]},\n      entry_points = \"\"\"\\\n      [paste.app_factory]\n      main = bodhi:main\n      [console_scripts]\n      initialize_bodhi_db = bodhi.scripts.initializedb:main\n      bodhi = bodhi.cli:cli\n      bodhi-push = bodhi.push:push\n      bodhi-expire-overrides = bodhi.scripts.expire_overrides:main\n      [moksha.consumer]\n      masher = bodhi.consumers.masher:Masher\n      updates = bodhi.consumers.updates:UpdatesHandler\n      \"\"\",\n      paster_plugins=['pyramid'],\n      )\n\n", "path": "setup.py"}]}