prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  ENH+TST find a way of testing GPU code
  With not too much investment in 💲 💰  it should be possible to set up a `jenkins` testing suite on amazon aws: The idea is to have a micro machine that costs 1c/h run the jenkins server. When tests should be run, this should somehow spawn a couple of GPU machines with different GPUs, ideally as spot instances, run the tests and then shut them down again.
  I looked into this at the very beginning of `kymatio`, but I don't really know how to set this up yet. If anybody has experience with this, feel free to try! :)
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env python
  2 # -*- coding: utf-8 -*-
  3 
  4 import csv
  5 import importlib
  6 import os
  7 import shutil
  8 import sys
  9 from setuptools import setup, find_packages
  10 
  11 # Constants
  12 DISTNAME = 'kymatio'
  13 DESCRIPTION = 'Wavelet scattering transforms in Python with GPU acceleration'
  14 URL = 'https://www.kymat.io'
  15 LICENSE = 'BSD-3-Clause'
  16 
  17 
  18 # Parse description
  19 with open('README.md') as f:
  20     README = f.read().split('\n')
  21     LONG_DESCRIPTION = '\n'.join([x for x in README if not x[:3]=='[!['])
  22 
  23 
  24 # Parse version.py
  25 kymatio_version_spec = importlib.util.spec_from_file_location(
  26     'kymatio_version', 'kymatio/version.py')
  27 kymatio_version_module = importlib.util.module_from_spec(kymatio_version_spec)
  28 kymatio_version_spec.loader.exec_module(kymatio_version_module)
  29 VERSION = kymatio_version_module.version
  30 
  31 
  32 # Parse requirements.txt
  33 with open('requirements.txt', 'r') as f:
  34     REQUIREMENTS = f.read().split('\n')
  35 
  36 
  37 setup_info = dict(
  38     # Metadata
  39     name=DISTNAME,
  40     version=VERSION,
  41     author=('Edouard Oyallon, Eugene Belilovsky, Sergey Zagoruyko, '
  42             'Michael Eickenberg, Mathieu Andreux, Georgios Exarchakis, '
  43             'Louis Thiry, Vincent Lostanlen, Joakim Andén, '
  44             'Tomás Angles, Gabriel Huang, Roberto Leonarduzzi'),
  45     author_email=('edouard.oyallon@centralesupelec.fr, belilove@iro.umontreal.ca, '
  46                   'sergey.zagoruyko@inria.fr, michael.eickenberg@berkeley.edu, '
  47                   'mathieu.andreux@ens.fr, georgios.exarchakis@ens.fr, '
  48                   'louis.thiry@ens.fr, vincent.lostanlen@nyu.edu, janden@flatironinstitute.org, '
  49                   'tomas.angles@ens.fr, gabriel.huang@umontreal.ca, roberto.leonarduzzi@ens.fr'),
  50     url=URL,
  51     download_url='https://github.com/kymatio/kymatio/releases',
  52     project_urls={
  53         'Documentation': 'https://www.kymat.io/codereference.html',
  54         'Source': 'https://github.com/kymatio/kymatio/',
  55         'Tracker': 'https://github.com/kymatio/kymatio/issues',
  56         'Authors': 'https://github.com/kymatio/kymatio/blob/master/AUTHORS.md'
  57     },
  58     classifiers=['Intended Audience :: Education',
  59                  'Intended Audience :: Science/Research',
  60                  'License :: OSI Approved :: BSD License',
  61                  'Natural Language :: English',
  62                  'Operating System :: MacOS',
  63                  'Operating System :: POSIX :: Linux',
  64                  'Programming Language :: Python :: 3.5',
  65                  'Programming Language :: Python :: 3.6',
  66                  'Programming Language :: Python :: 3.7',
  67                  'Programming Language :: Python :: 3.8',
  68                  'Topic :: Multimedia :: Graphics :: 3D Modeling',
  69                  'Topic :: Multimedia :: Sound/Audio :: Analysis',
  70                  'Topic :: Scientific/Engineering :: Artificial Intelligence',
  71                  'Topic :: Scientific/Engineering :: Chemistry',
  72                  'Topic :: Scientific/Engineering :: Image Recognition',
  73                  'Topic :: Scientific/Engineering :: Information Analysis',
  74                  'Topic :: Scientific/Engineering :: Mathematics',
  75                  'Topic :: Scientific/Engineering :: Physics',
  76                  'Topic :: Software Development :: Libraries :: Python Modules',
  77                  ],
  78     description=DESCRIPTION,
  79     long_description=LONG_DESCRIPTION,
  80     long_description_content_type='text/markdown',
  81     python_requires='>=3.5',
  82     license=LICENSE,
  83     packages=find_packages(exclude=('test',)),
  84     install_requires=REQUIREMENTS,
  85     zip_safe=True,
  86 )
  87 
  88 setup(**setup_info)
  89
  [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
  @@ -16,7 +16,7 @@
   
   
   # Parse description
  -with open('README.md') as f:
  +with open('README.md', encoding='utf8') as f:
       README = f.read().split('\n')
       LONG_DESCRIPTION = '\n'.join([x for x in README if not x[:3]=='[!['])
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -16,7 +16,7 @@\n \n \n # Parse description\n-with open('README.md') as f:\n+with open('README.md', encoding='utf8') as f:\n     README = f.read().split('\\n')\n     LONG_DESCRIPTION = '\\n'.join([x for x in README if not x[:3]=='[!['])\n", "issue": "ENH+TST find a way of testing GPU code\nWith not too much investment in \ud83d\udcb2 \ud83d\udcb0  it should be possible to set up a `jenkins` testing suite on amazon aws: The idea is to have a micro machine that costs 1c/h run the jenkins server. When tests should be run, this should somehow spawn a couple of GPU machines with different GPUs, ideally as spot instances, run the tests and then shut them down again.\r\nI looked into this at the very beginning of `kymatio`, but I don't really know how to set this up yet. If anybody has experience with this, feel free to try! :)\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\nimport csv\nimport importlib\nimport os\nimport shutil\nimport sys\nfrom setuptools import setup, find_packages\n\n# Constants\nDISTNAME = 'kymatio'\nDESCRIPTION = 'Wavelet scattering transforms in Python with GPU acceleration'\nURL = 'https://www.kymat.io'\nLICENSE = 'BSD-3-Clause'\n\n\n# Parse description\nwith open('README.md') as f:\n    README = f.read().split('\\n')\n    LONG_DESCRIPTION = '\\n'.join([x for x in README if not x[:3]=='[!['])\n\n\n# Parse version.py\nkymatio_version_spec = importlib.util.spec_from_file_location(\n    'kymatio_version', 'kymatio/version.py')\nkymatio_version_module = importlib.util.module_from_spec(kymatio_version_spec)\nkymatio_version_spec.loader.exec_module(kymatio_version_module)\nVERSION = kymatio_version_module.version\n\n\n# Parse requirements.txt\nwith open('requirements.txt', 'r') as f:\n    REQUIREMENTS = f.read().split('\\n')\n\n\nsetup_info = dict(\n    # Metadata\n    name=DISTNAME,\n    version=VERSION,\n    author=('Edouard Oyallon, Eugene Belilovsky, Sergey Zagoruyko, '\n            'Michael Eickenberg, Mathieu Andreux, Georgios Exarchakis, '\n            'Louis Thiry, Vincent Lostanlen, Joakim And\u00e9n, '\n            'Tom\u00e1s Angles, Gabriel Huang, Roberto Leonarduzzi'),\n    author_email=('edouard.oyallon@centralesupelec.fr, belilove@iro.umontreal.ca, '\n                  'sergey.zagoruyko@inria.fr, michael.eickenberg@berkeley.edu, '\n                  'mathieu.andreux@ens.fr, georgios.exarchakis@ens.fr, '\n                  'louis.thiry@ens.fr, vincent.lostanlen@nyu.edu, janden@flatironinstitute.org, '\n                  'tomas.angles@ens.fr, gabriel.huang@umontreal.ca, roberto.leonarduzzi@ens.fr'),\n    url=URL,\n    download_url='https://github.com/kymatio/kymatio/releases',\n    project_urls={\n        'Documentation': 'https://www.kymat.io/codereference.html',\n        'Source': 'https://github.com/kymatio/kymatio/',\n        'Tracker': 'https://github.com/kymatio/kymatio/issues',\n        'Authors': 'https://github.com/kymatio/kymatio/blob/master/AUTHORS.md'\n    },\n    classifiers=['Intended Audience :: Education',\n                 'Intended Audience :: Science/Research',\n                 'License :: OSI Approved :: BSD License',\n                 'Natural Language :: English',\n                 'Operating System :: MacOS',\n                 'Operating System :: POSIX :: Linux',\n                 'Programming Language :: Python :: 3.5',\n                 'Programming Language :: Python :: 3.6',\n                 'Programming Language :: Python :: 3.7',\n                 'Programming Language :: Python :: 3.8',\n                 'Topic :: Multimedia :: Graphics :: 3D Modeling',\n                 'Topic :: Multimedia :: Sound/Audio :: Analysis',\n                 'Topic :: Scientific/Engineering :: Artificial Intelligence',\n                 'Topic :: Scientific/Engineering :: Chemistry',\n                 'Topic :: Scientific/Engineering :: Image Recognition',\n                 'Topic :: Scientific/Engineering :: Information Analysis',\n                 'Topic :: Scientific/Engineering :: Mathematics',\n                 'Topic :: Scientific/Engineering :: Physics',\n                 'Topic :: Software Development :: Libraries :: Python Modules',\n                 ],\n    description=DESCRIPTION,\n    long_description=LONG_DESCRIPTION,\n    long_description_content_type='text/markdown',\n    python_requires='>=3.5',\n    license=LICENSE,\n    packages=find_packages(exclude=('test',)),\n    install_requires=REQUIREMENTS,\n    zip_safe=True,\n)\n\nsetup(**setup_info)\n", "path": "setup.py"}]}