prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Unable to install with opentracing extras
  I was following the [OpenTracing setup instructions](https://docs.datadoghq.com/tracing/advanced_usage/?tab=python#opentracing) but got a warning about missing extras:
  
  ```sh
  (blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> pip list
  Package    Version
  ---------- -------
  pip        18.0   
  setuptools 40.4.1 
  wheel      0.31.1 
  
  (blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> python --version
  Python 2.7.14
  
  (blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> pip --version
  pip 18.0 from /home/sam/.local/share/virtualenvs/blah-YneZd-6L/lib/python2.7/site-packages/pip (python 2.7)
  
  
  (blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> pip install 'ddtrace[opentracing] == 0.14.0'
  Collecting ddtrace[opentracing]==0.14.0
    ddtrace 0.14.0 does not provide the extra 'opentracing'
  Collecting msgpack-python (from ddtrace[opentracing]==0.14.0)
  Collecting wrapt (from ddtrace[opentracing]==0.14.0)
  Installing collected packages: msgpack-python, wrapt, ddtrace
  Successfully installed ddtrace-0.14.0 msgpack-python-0.5.6 wrapt-1.10.11
  ```
  
  > `ddtrace 0.14.0 does not provide the extra 'opentracing'`
  
  Happens on Python 3.6 as well.
  
  --- 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 import re
  4 
  5 from setuptools import setup, find_packages
  6 from setuptools.command.test import test as TestCommand
  7 
  8 
  9 def get_version(package):
  10     """
  11     Return package version as listed in `__version__` in `__init__.py`.
  12     This method prevents to import packages at setup-time.
  13     """
  14     init_py = open(os.path.join(package, '__init__.py')).read()
  15     return re.search("__version__ = ['\"]([^'\"]+)['\"]", init_py).group(1)
  16 
  17 
  18 class Tox(TestCommand):
  19 
  20     user_options = [('tox-args=', 'a', "Arguments to pass to tox")]
  21 
  22     def initialize_options(self):
  23         TestCommand.initialize_options(self)
  24         self.tox_args = None
  25 
  26     def finalize_options(self):
  27         TestCommand.finalize_options(self)
  28         self.test_args = []
  29         self.test_suite = True
  30 
  31     def run_tests(self):
  32         # import here, cause outside the eggs aren't loaded
  33         import tox
  34         import shlex
  35         args = self.tox_args
  36         if args:
  37             args = shlex.split(self.tox_args)
  38         errno = tox.cmdline(args=args)
  39         sys.exit(errno)
  40 
  41 
  42 version = get_version('ddtrace')
  43 # Append a suffix to the version for dev builds
  44 if os.environ.get('VERSION_SUFFIX'):
  45     version = '{v}+{s}'.format(
  46         v=version,
  47         s=os.environ.get('VERSION_SUFFIX'),
  48     )
  49 
  50 setup(
  51     name='ddtrace',
  52     version=version,
  53     description='Datadog tracing code',
  54     url='https://github.com/DataDog/dd-trace-py',
  55     author='Datadog, Inc.',
  56     author_email='dev@datadoghq.com',
  57     license='BSD',
  58     packages=find_packages(exclude=['tests*']),
  59     install_requires=[
  60         "wrapt",
  61         "msgpack-python",
  62     ],
  63     extra_requires={
  64         # users can include opentracing by having:
  65         # install_requires=["ddtrace[opentracing]", ...]
  66         "opentracing": ["opentracing"],
  67     },
  68     # plugin tox
  69     tests_require=['tox', 'flake8'],
  70     cmdclass={'test': Tox},
  71     entry_points={
  72         'console_scripts': [
  73             'ddtrace-run = ddtrace.commands.ddtrace_run:main'
  74         ]
  75     },
  76     classifiers=[
  77         'Programming Language :: Python',
  78         'Programming Language :: Python :: 2.7',
  79         'Programming Language :: Python :: 3.4',
  80         'Programming Language :: Python :: 3.5',
  81         'Programming Language :: Python :: 3.6',
  82     ],
  83 )
  84
  ```
  --- 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
  @@ -60,10 +60,10 @@
           "wrapt",
           "msgpack-python",
       ],
  -    extra_requires={
  +    extras_require={
           # users can include opentracing by having:
           # install_requires=["ddtrace[opentracing]", ...]
  -        "opentracing": ["opentracing"],
  +        "opentracing": ["opentracing>=2.0.0"],
       },
       # plugin tox
       tests_require=['tox', 'flake8'],
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -60,10 +60,10 @@\n         \"wrapt\",\n         \"msgpack-python\",\n     ],\n-    extra_requires={\n+    extras_require={\n         # users can include opentracing by having:\n         # install_requires=[\"ddtrace[opentracing]\", ...]\n-        \"opentracing\": [\"opentracing\"],\n+        \"opentracing\": [\"opentracing>=2.0.0\"],\n     },\n     # plugin tox\n     tests_require=['tox', 'flake8'],\n", "issue": "Unable to install with opentracing extras\nI was following the [OpenTracing setup instructions](https://docs.datadoghq.com/tracing/advanced_usage/?tab=python#opentracing) but got a warning about missing extras:\r\n\r\n```sh\r\n(blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> pip list\r\nPackage    Version\r\n---------- -------\r\npip        18.0   \r\nsetuptools 40.4.1 \r\nwheel      0.31.1 \r\n\r\n(blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> python --version\r\nPython 2.7.14\r\n\r\n(blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> pip --version\r\npip 18.0 from /home/sam/.local/share/virtualenvs/blah-YneZd-6L/lib/python2.7/site-packages/pip (python 2.7)\r\n\r\n\r\n(blah-YneZd-6L) sam@sam-Q325UAR ~/t/blah> pip install 'ddtrace[opentracing] == 0.14.0'\r\nCollecting ddtrace[opentracing]==0.14.0\r\n  ddtrace 0.14.0 does not provide the extra 'opentracing'\r\nCollecting msgpack-python (from ddtrace[opentracing]==0.14.0)\r\nCollecting wrapt (from ddtrace[opentracing]==0.14.0)\r\nInstalling collected packages: msgpack-python, wrapt, ddtrace\r\nSuccessfully installed ddtrace-0.14.0 msgpack-python-0.5.6 wrapt-1.10.11\r\n```\r\n\r\n> `ddtrace 0.14.0 does not provide the extra 'opentracing'`\r\n\r\nHappens on Python 3.6 as well.\n", "before_files": [{"content": "import os\nimport sys\nimport re\n\nfrom setuptools import setup, find_packages\nfrom setuptools.command.test import test as TestCommand\n\n\ndef get_version(package):\n    \"\"\"\n    Return package version as listed in `__version__` in `__init__.py`.\n    This method prevents to import packages at setup-time.\n    \"\"\"\n    init_py = open(os.path.join(package, '__init__.py')).read()\n    return re.search(\"__version__ = ['\\\"]([^'\\\"]+)['\\\"]\", init_py).group(1)\n\n\nclass Tox(TestCommand):\n\n    user_options = [('tox-args=', 'a', \"Arguments to pass to tox\")]\n\n    def initialize_options(self):\n        TestCommand.initialize_options(self)\n        self.tox_args = None\n\n    def finalize_options(self):\n        TestCommand.finalize_options(self)\n        self.test_args = []\n        self.test_suite = True\n\n    def run_tests(self):\n        # import here, cause outside the eggs aren't loaded\n        import tox\n        import shlex\n        args = self.tox_args\n        if args:\n            args = shlex.split(self.tox_args)\n        errno = tox.cmdline(args=args)\n        sys.exit(errno)\n\n\nversion = get_version('ddtrace')\n# Append a suffix to the version for dev builds\nif os.environ.get('VERSION_SUFFIX'):\n    version = '{v}+{s}'.format(\n        v=version,\n        s=os.environ.get('VERSION_SUFFIX'),\n    )\n\nsetup(\n    name='ddtrace',\n    version=version,\n    description='Datadog tracing code',\n    url='https://github.com/DataDog/dd-trace-py',\n    author='Datadog, Inc.',\n    author_email='dev@datadoghq.com',\n    license='BSD',\n    packages=find_packages(exclude=['tests*']),\n    install_requires=[\n        \"wrapt\",\n        \"msgpack-python\",\n    ],\n    extra_requires={\n        # users can include opentracing by having:\n        # install_requires=[\"ddtrace[opentracing]\", ...]\n        \"opentracing\": [\"opentracing\"],\n    },\n    # plugin tox\n    tests_require=['tox', 'flake8'],\n    cmdclass={'test': Tox},\n    entry_points={\n        'console_scripts': [\n            'ddtrace-run = ddtrace.commands.ddtrace_run:main'\n        ]\n    },\n    classifiers=[\n        'Programming Language :: Python',\n        'Programming Language :: Python :: 2.7',\n        'Programming Language :: Python :: 3.4',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n    ],\n)\n", "path": "setup.py"}], "after_files": [{"content": "import os\nimport sys\nimport re\n\nfrom setuptools import setup, find_packages\nfrom setuptools.command.test import test as TestCommand\n\n\ndef get_version(package):\n    \"\"\"\n    Return package version as listed in `__version__` in `__init__.py`.\n    This method prevents to import packages at setup-time.\n    \"\"\"\n    init_py = open(os.path.join(package, '__init__.py')).read()\n    return re.search(\"__version__ = ['\\\"]([^'\\\"]+)['\\\"]\", init_py).group(1)\n\n\nclass Tox(TestCommand):\n\n    user_options = [('tox-args=', 'a', \"Arguments to pass to tox\")]\n\n    def initialize_options(self):\n        TestCommand.initialize_options(self)\n        self.tox_args = None\n\n    def finalize_options(self):\n        TestCommand.finalize_options(self)\n        self.test_args = []\n        self.test_suite = True\n\n    def run_tests(self):\n        # import here, cause outside the eggs aren't loaded\n        import tox\n        import shlex\n        args = self.tox_args\n        if args:\n            args = shlex.split(self.tox_args)\n        errno = tox.cmdline(args=args)\n        sys.exit(errno)\n\n\nversion = get_version('ddtrace')\n# Append a suffix to the version for dev builds\nif os.environ.get('VERSION_SUFFIX'):\n    version = '{v}+{s}'.format(\n        v=version,\n        s=os.environ.get('VERSION_SUFFIX'),\n    )\n\nsetup(\n    name='ddtrace',\n    version=version,\n    description='Datadog tracing code',\n    url='https://github.com/DataDog/dd-trace-py',\n    author='Datadog, Inc.',\n    author_email='dev@datadoghq.com',\n    license='BSD',\n    packages=find_packages(exclude=['tests*']),\n    install_requires=[\n        \"wrapt\",\n        \"msgpack-python\",\n    ],\n    extras_require={\n        # users can include opentracing by having:\n        # install_requires=[\"ddtrace[opentracing]\", ...]\n        \"opentracing\": [\"opentracing>=2.0.0\"],\n    },\n    # plugin tox\n    tests_require=['tox', 'flake8'],\n    cmdclass={'test': Tox},\n    entry_points={\n        'console_scripts': [\n            'ddtrace-run = ddtrace.commands.ddtrace_run:main'\n        ]\n    },\n    classifiers=[\n        'Programming Language :: Python',\n        'Programming Language :: Python :: 2.7',\n        'Programming Language :: Python :: 3.4',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n    ],\n)\n", "path": "setup.py"}]}