prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Strip links/badges/images from README for PyPi
  - While the new PyPi Warehouse supports markdown, images/badges/links are slow to load and will not work if they use relative paths (e.g., https://test.pypi.org/project/pybotics/201803222157/#description)
  - These elements should be stripped from the README prior to upload
  
  </issue>
  <code>
  [start of setup.py]
  1 """Setup module."""
  2 import logging
  3 from pathlib import Path
  4 
  5 from setuptools import find_packages, setup  # type: ignore
  6 
  7 
  8 def main() -> None:
  9     """Run setup."""
  10     # run setup
  11     setup(name='pybotics',
  12           packages=find_packages(include=['pybotics']),
  13           url='https://github.com/nnadeau/pybotics',
  14           license='MIT',
  15           author='Nicholas Nadeau',
  16           author_email='nicholas.nadeau@gmail.com',
  17           description='Python Toolbox for Robotics',
  18           long_description=get_readme(),
  19           long_description_content_type='text/markdown',
  20           use_scm_version=True,
  21           setup_requires=['setuptools_scm'],
  22           install_requires=get_requirements(),  # type: ignore
  23           tests_require=['pytest'],
  24           classifiers=[
  25               'Development Status :: 4 - Beta',
  26               'Intended Audience :: Developers',
  27               'Intended Audience :: Education',
  28               'Intended Audience :: End Users/Desktop',
  29               'Intended Audience :: Manufacturing',
  30               'Intended Audience :: Science/Research',
  31               'Topic :: Education',
  32               'Topic :: Scientific/Engineering',
  33               'Topic :: Scientific/Engineering :: Artificial Intelligence',
  34               'Topic :: Scientific/Engineering :: Human Machine Interfaces',
  35               'Topic :: Scientific/Engineering :: Mathematics',
  36               'Topic :: Scientific/Engineering :: Physics',
  37               'Topic :: Utilities',
  38               'License :: OSI Approved :: MIT License',
  39               'Programming Language :: Python :: 3 :: Only',
  40               'Programming Language :: Python :: 3',
  41               'Programming Language :: Python :: 3.4',
  42               'Programming Language :: Python :: 3.5',
  43               'Programming Language :: Python :: 3.6',
  44           ],
  45           keywords='python robot robotics research '
  46                    'automation kinematics geometry')
  47 
  48 
  49 def get_readme() -> str:
  50     """Get README text."""
  51     # description
  52     readme_path = Path(__file__).parent / 'README.md'
  53     logging.info('README path: {}'.format(readme_path.resolve()))
  54     with open(str(readme_path)) as f:
  55         readme = f.read()
  56     return readme
  57 
  58 
  59 # don't want to import typing... so ignore
  60 def get_requirements():  # type: ignore
  61     """Get requirements list."""
  62     # requirements
  63     requirements_path = Path(__file__).parent / 'requirements.txt'
  64     logging.info('Requirements path: {}'.format(requirements_path.resolve()))
  65     with open(str(requirements_path)) as f:
  66         requirements = f.read().splitlines()
  67     for i, req in enumerate(requirements):
  68         requirements[i] = req.split()[0]
  69     return requirements
  70 
  71 
  72 if __name__ == '__main__':
  73     logging.basicConfig(level=logging.INFO)
  74     main()
  75
  [end of setup.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/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -18,7 +18,7 @@
             long_description=get_readme(),
             long_description_content_type='text/markdown',
             use_scm_version=True,
  -          setup_requires=['setuptools_scm'],
  +          setup_requires=['setuptools', 'setuptools_scm'],
             install_requires=get_requirements(),  # type: ignore
             tests_require=['pytest'],
             classifiers=[
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -18,7 +18,7 @@\n           long_description=get_readme(),\n           long_description_content_type='text/markdown',\n           use_scm_version=True,\n-          setup_requires=['setuptools_scm'],\n+          setup_requires=['setuptools', 'setuptools_scm'],\n           install_requires=get_requirements(),  # type: ignore\n           tests_require=['pytest'],\n           classifiers=[\n", "issue": "Strip links/badges/images from README for PyPi\n- While the new PyPi Warehouse supports markdown, images/badges/links are slow to load and will not work if they use relative paths (e.g., https://test.pypi.org/project/pybotics/201803222157/#description)\r\n- These elements should be stripped from the README prior to upload\n", "before_files": [{"content": "\"\"\"Setup module.\"\"\"\nimport logging\nfrom pathlib import Path\n\nfrom setuptools import find_packages, setup  # type: ignore\n\n\ndef main() -> None:\n    \"\"\"Run setup.\"\"\"\n    # run setup\n    setup(name='pybotics',\n          packages=find_packages(include=['pybotics']),\n          url='https://github.com/nnadeau/pybotics',\n          license='MIT',\n          author='Nicholas Nadeau',\n          author_email='nicholas.nadeau@gmail.com',\n          description='Python Toolbox for Robotics',\n          long_description=get_readme(),\n          long_description_content_type='text/markdown',\n          use_scm_version=True,\n          setup_requires=['setuptools_scm'],\n          install_requires=get_requirements(),  # type: ignore\n          tests_require=['pytest'],\n          classifiers=[\n              'Development Status :: 4 - Beta',\n              'Intended Audience :: Developers',\n              'Intended Audience :: Education',\n              'Intended Audience :: End Users/Desktop',\n              'Intended Audience :: Manufacturing',\n              'Intended Audience :: Science/Research',\n              'Topic :: Education',\n              'Topic :: Scientific/Engineering',\n              'Topic :: Scientific/Engineering :: Artificial Intelligence',\n              'Topic :: Scientific/Engineering :: Human Machine Interfaces',\n              'Topic :: Scientific/Engineering :: Mathematics',\n              'Topic :: Scientific/Engineering :: Physics',\n              'Topic :: Utilities',\n              'License :: OSI Approved :: MIT License',\n              'Programming Language :: Python :: 3 :: Only',\n              'Programming Language :: Python :: 3',\n              'Programming Language :: Python :: 3.4',\n              'Programming Language :: Python :: 3.5',\n              'Programming Language :: Python :: 3.6',\n          ],\n          keywords='python robot robotics research '\n                   'automation kinematics geometry')\n\n\ndef get_readme() -> str:\n    \"\"\"Get README text.\"\"\"\n    # description\n    readme_path = Path(__file__).parent / 'README.md'\n    logging.info('README path: {}'.format(readme_path.resolve()))\n    with open(str(readme_path)) as f:\n        readme = f.read()\n    return readme\n\n\n# don't want to import typing... so ignore\ndef get_requirements():  # type: ignore\n    \"\"\"Get requirements list.\"\"\"\n    # requirements\n    requirements_path = Path(__file__).parent / 'requirements.txt'\n    logging.info('Requirements path: {}'.format(requirements_path.resolve()))\n    with open(str(requirements_path)) as f:\n        requirements = f.read().splitlines()\n    for i, req in enumerate(requirements):\n        requirements[i] = req.split()[0]\n    return requirements\n\n\nif __name__ == '__main__':\n    logging.basicConfig(level=logging.INFO)\n    main()\n", "path": "setup.py"}]}