prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Pin versions for LTS release
  I think that versions of (some) should be allowed to float but when we are ready for an LTS release, the versions should be pinned at that time.
  
  @r0fls @ahopkins @seemethere @ashleysommer @yunstanford @ahopkins 
  
  </issue>
  <code>
  [start of setup.py]
  1 """
  2 Sanic
  3 """
  4 import codecs
  5 import os
  6 import re
  7 from distutils.errors import DistutilsPlatformError
  8 from distutils.util import strtobool
  9 
  10 from setuptools import setup
  11 
  12 
  13 def open_local(paths, mode='r', encoding='utf8'):
  14     path = os.path.join(
  15         os.path.abspath(os.path.dirname(__file__)),
  16         *paths
  17     )
  18 
  19     return codecs.open(path, mode, encoding)
  20 
  21 
  22 with open_local(['sanic', '__init__.py'], encoding='latin1') as fp:
  23     try:
  24         version = re.findall(r"^__version__ = '([^']+)'\r?$",
  25                              fp.read(), re.M)[0]
  26     except IndexError:
  27         raise RuntimeError('Unable to determine version.')
  28 
  29 
  30 with open_local(['README.rst']) as rm:
  31     long_description = rm.read()
  32 
  33 setup_kwargs = {
  34     'name': 'sanic',
  35     'version': version,
  36     'url': 'http://github.com/channelcat/sanic/',
  37     'license': 'MIT',
  38     'author': 'Channel Cat',
  39     'author_email': 'channelcat@gmail.com',
  40     'description': (
  41         'A microframework based on uvloop, httptools, and learnings of flask'),
  42     'long_description': long_description,
  43     'packages': ['sanic'],
  44     'platforms': 'any',
  45     'classifiers': [
  46         'Development Status :: 4 - Beta',
  47         'Environment :: Web Environment',
  48         'License :: OSI Approved :: MIT License',
  49         'Programming Language :: Python :: 3.5',
  50         'Programming Language :: Python :: 3.6',
  51     ],
  52 }
  53 
  54 env_dependency = '; sys_platform != "win32" and implementation_name == "cpython"'
  55 ujson = 'ujson>=1.35' + env_dependency
  56 uvloop = 'uvloop>=0.5.3' + env_dependency
  57 
  58 requirements = [
  59     'httptools>=0.0.9',
  60     uvloop,
  61     ujson,
  62     'aiofiles>=0.3.0',
  63     'websockets>=5.0,<6.0',
  64     'multidict>=4.0,<5.0',
  65 ]
  66 if strtobool(os.environ.get("SANIC_NO_UJSON", "no")):
  67     print("Installing without uJSON")
  68     requirements.remove(ujson)
  69 
  70 # 'nt' means windows OS
  71 if strtobool(os.environ.get("SANIC_NO_UVLOOP", "no")):
  72     print("Installing without uvLoop")
  73     requirements.remove(uvloop)
  74 
  75 setup_kwargs['install_requires'] = requirements
  76 setup(**setup_kwargs)
  77
  [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
  @@ -56,7 +56,7 @@
   uvloop = 'uvloop>=0.5.3' + env_dependency
   
   requirements = [
  -    'httptools>=0.0.9',
  +    'httptools>=0.0.10',
       uvloop,
       ujson,
       'aiofiles>=0.3.0',
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -56,7 +56,7 @@\n uvloop = 'uvloop>=0.5.3' + env_dependency\n \n requirements = [\n-    'httptools>=0.0.9',\n+    'httptools>=0.0.10',\n     uvloop,\n     ujson,\n     'aiofiles>=0.3.0',\n", "issue": "Pin versions for LTS release\nI think that versions of (some) should be allowed to float but when we are ready for an LTS release, the versions should be pinned at that time.\r\n\r\n@r0fls @ahopkins @seemethere @ashleysommer @yunstanford @ahopkins \n", "before_files": [{"content": "\"\"\"\nSanic\n\"\"\"\nimport codecs\nimport os\nimport re\nfrom distutils.errors import DistutilsPlatformError\nfrom distutils.util import strtobool\n\nfrom setuptools import setup\n\n\ndef open_local(paths, mode='r', encoding='utf8'):\n    path = os.path.join(\n        os.path.abspath(os.path.dirname(__file__)),\n        *paths\n    )\n\n    return codecs.open(path, mode, encoding)\n\n\nwith open_local(['sanic', '__init__.py'], encoding='latin1') as fp:\n    try:\n        version = re.findall(r\"^__version__ = '([^']+)'\\r?$\",\n                             fp.read(), re.M)[0]\n    except IndexError:\n        raise RuntimeError('Unable to determine version.')\n\n\nwith open_local(['README.rst']) as rm:\n    long_description = rm.read()\n\nsetup_kwargs = {\n    'name': 'sanic',\n    'version': version,\n    'url': 'http://github.com/channelcat/sanic/',\n    'license': 'MIT',\n    'author': 'Channel Cat',\n    'author_email': 'channelcat@gmail.com',\n    'description': (\n        'A microframework based on uvloop, httptools, and learnings of flask'),\n    'long_description': long_description,\n    'packages': ['sanic'],\n    'platforms': 'any',\n    'classifiers': [\n        'Development Status :: 4 - Beta',\n        'Environment :: Web Environment',\n        'License :: OSI Approved :: MIT License',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n    ],\n}\n\nenv_dependency = '; sys_platform != \"win32\" and implementation_name == \"cpython\"'\nujson = 'ujson>=1.35' + env_dependency\nuvloop = 'uvloop>=0.5.3' + env_dependency\n\nrequirements = [\n    'httptools>=0.0.9',\n    uvloop,\n    ujson,\n    'aiofiles>=0.3.0',\n    'websockets>=5.0,<6.0',\n    'multidict>=4.0,<5.0',\n]\nif strtobool(os.environ.get(\"SANIC_NO_UJSON\", \"no\")):\n    print(\"Installing without uJSON\")\n    requirements.remove(ujson)\n\n# 'nt' means windows OS\nif strtobool(os.environ.get(\"SANIC_NO_UVLOOP\", \"no\")):\n    print(\"Installing without uvLoop\")\n    requirements.remove(uvloop)\n\nsetup_kwargs['install_requires'] = requirements\nsetup(**setup_kwargs)\n", "path": "setup.py"}]}