prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  merge pytest fixtures
  the scope of the issue is to merge and restructure the pytest fixtures in https://github.com/plotly/pytest-dash into dash. It might include few integration tests rewrite  with the new fixtures and python state `assert`, but all tests rewrite is out of the scope of this issue. 
  
  Note: all fixtures will be available for pytest as plugin thanks to the `pytest11` entry point by `pip install dash`. 
  
  </issue>
  <code>
  [start of setup.py]
  1 import io
  2 from setuptools import setup, find_packages
  3 
  4 main_ns = {}
  5 exec(open('dash/version.py').read(), main_ns)  # pylint: disable=exec-used
  6 
  7 setup(
  8     name='dash',
  9     version=main_ns['__version__'],
  10     author='chris p',
  11     author_email='chris@plot.ly',
  12     packages=find_packages(exclude=['tests*']),
  13     include_package_data=True,
  14     license='MIT',
  15     description=('A Python framework for building reactive web-apps. '
  16                  'Developed by Plotly.'),
  17     long_description=io.open('README.md', encoding='utf-8').read(),
  18     long_description_content_type='text/markdown',
  19     install_requires=[
  20         'Flask>=0.12',
  21         'flask-compress',
  22         'plotly',
  23         'dash_renderer==0.24.0',
  24         'dash-core-components==0.48.0',
  25         'dash-html-components==0.16.0',
  26         'dash-table==3.7.0'
  27     ],
  28     entry_points={
  29         'console_scripts': [
  30             'dash-generate-components ='
  31             ' dash.development.component_generator:cli'
  32         ]
  33     },
  34     url='https://plot.ly/dash',
  35     classifiers=[
  36         'Development Status :: 5 - Production/Stable',
  37         'Environment :: Web Environment',
  38         'Framework :: Flask',
  39         'Intended Audience :: Developers',
  40         'Intended Audience :: Education',
  41         'Intended Audience :: Financial and Insurance Industry',
  42         'Intended Audience :: Healthcare Industry',
  43         'Intended Audience :: Manufacturing',
  44         'Intended Audience :: Science/Research',
  45         'License :: OSI Approved :: MIT License',
  46         'Programming Language :: Python',
  47         'Programming Language :: Python :: 2',
  48         'Programming Language :: Python :: 2.7',
  49         'Programming Language :: Python :: 3',
  50         'Programming Language :: Python :: 3.3',
  51         'Programming Language :: Python :: 3.4',
  52         'Programming Language :: Python :: 3.5',
  53         'Programming Language :: Python :: 3.6',
  54         'Programming Language :: Python :: 3.7',
  55         'Topic :: Database :: Front-Ends',
  56         'Topic :: Office/Business :: Financial :: Spreadsheet',
  57         'Topic :: Scientific/Engineering :: Visualization',
  58         'Topic :: Software Development :: Libraries :: Application Frameworks',
  59         'Topic :: Software Development :: Widget Sets'
  60     ]
  61 )
  62
  [end of setup.py]
  [start of dash-renderer/version.py]
  1 __version__ = '0.23.0'
  2
  [end of dash-renderer/version.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/dash-renderer/version.py b/dash-renderer/version.py
  --- a/dash-renderer/version.py
  +++ b/dash-renderer/version.py
  @@ -1 +1 @@
  -__version__ = '0.23.0'
  +__version__ = '0.24.0'
  diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -12,8 +12,10 @@
       packages=find_packages(exclude=['tests*']),
       include_package_data=True,
       license='MIT',
  -    description=('A Python framework for building reactive web-apps. '
  -                 'Developed by Plotly.'),
  +    description=(
  +        'A Python framework for building reactive web-apps. '
  +        'Developed by Plotly.'
  +    ),
       long_description=io.open('README.md', encoding='utf-8').read(),
       long_description_content_type='text/markdown',
       install_requires=[
  @@ -29,7 +31,10 @@
           'console_scripts': [
               'dash-generate-components ='
               ' dash.development.component_generator:cli'
  -        ]
  +        ],
  +        'pytest11': [
  +            'dash = dash.testing.plugin'
  +        ],
       },
       url='https://plot.ly/dash',
       classifiers=[
  
verification_info: {"golden_diff": "diff --git a/dash-renderer/version.py b/dash-renderer/version.py\n--- a/dash-renderer/version.py\n+++ b/dash-renderer/version.py\n@@ -1 +1 @@\n-__version__ = '0.23.0'\n+__version__ = '0.24.0'\ndiff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -12,8 +12,10 @@\n     packages=find_packages(exclude=['tests*']),\n     include_package_data=True,\n     license='MIT',\n-    description=('A Python framework for building reactive web-apps. '\n-                 'Developed by Plotly.'),\n+    description=(\n+        'A Python framework for building reactive web-apps. '\n+        'Developed by Plotly.'\n+    ),\n     long_description=io.open('README.md', encoding='utf-8').read(),\n     long_description_content_type='text/markdown',\n     install_requires=[\n@@ -29,7 +31,10 @@\n         'console_scripts': [\n             'dash-generate-components ='\n             ' dash.development.component_generator:cli'\n-        ]\n+        ],\n+        'pytest11': [\n+            'dash = dash.testing.plugin'\n+        ],\n     },\n     url='https://plot.ly/dash',\n     classifiers=[\n", "issue": "merge pytest fixtures\nthe scope of the issue is to merge and restructure the pytest fixtures in https://github.com/plotly/pytest-dash into dash. It might include few integration tests rewrite  with the new fixtures and python state `assert`, but all tests rewrite is out of the scope of this issue. \r\n\r\nNote: all fixtures will be available for pytest as plugin thanks to the `pytest11` entry point by `pip install dash`. \n", "before_files": [{"content": "import io\nfrom setuptools import setup, find_packages\n\nmain_ns = {}\nexec(open('dash/version.py').read(), main_ns)  # pylint: disable=exec-used\n\nsetup(\n    name='dash',\n    version=main_ns['__version__'],\n    author='chris p',\n    author_email='chris@plot.ly',\n    packages=find_packages(exclude=['tests*']),\n    include_package_data=True,\n    license='MIT',\n    description=('A Python framework for building reactive web-apps. '\n                 'Developed by Plotly.'),\n    long_description=io.open('README.md', encoding='utf-8').read(),\n    long_description_content_type='text/markdown',\n    install_requires=[\n        'Flask>=0.12',\n        'flask-compress',\n        'plotly',\n        'dash_renderer==0.24.0',\n        'dash-core-components==0.48.0',\n        'dash-html-components==0.16.0',\n        'dash-table==3.7.0'\n    ],\n    entry_points={\n        'console_scripts': [\n            'dash-generate-components ='\n            ' dash.development.component_generator:cli'\n        ]\n    },\n    url='https://plot.ly/dash',\n    classifiers=[\n        'Development Status :: 5 - Production/Stable',\n        'Environment :: Web Environment',\n        'Framework :: Flask',\n        'Intended Audience :: Developers',\n        'Intended Audience :: Education',\n        'Intended Audience :: Financial and Insurance Industry',\n        'Intended Audience :: Healthcare Industry',\n        'Intended Audience :: Manufacturing',\n        'Intended Audience :: Science/Research',\n        'License :: OSI Approved :: MIT License',\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        'Programming Language :: Python :: 3.7',\n        'Topic :: Database :: Front-Ends',\n        'Topic :: Office/Business :: Financial :: Spreadsheet',\n        'Topic :: Scientific/Engineering :: Visualization',\n        'Topic :: Software Development :: Libraries :: Application Frameworks',\n        'Topic :: Software Development :: Widget Sets'\n    ]\n)\n", "path": "setup.py"}, {"content": "__version__ = '0.23.0'\n", "path": "dash-renderer/version.py"}]}