prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Drop Python 3.4 support
  EOL 2019-03-19: https://devguide.python.org/#status-of-python-branches
  
  </issue>
  <code>
  [start of setup.py]
  1 import io
  2 import re
  3 
  4 from setuptools import find_packages
  5 from setuptools import setup
  6 
  7 with io.open("README.rst", "rt", encoding="utf8") as f:
  8     readme = f.read()
  9 
  10 with io.open("src/werkzeug/__init__.py", "rt", encoding="utf8") as f:
  11     version = re.search(r'__version__ = "(.*?)"', f.read(), re.M).group(1)
  12 
  13 setup(
  14     name="Werkzeug",
  15     version=version,
  16     url="https://palletsprojects.com/p/werkzeug/",
  17     project_urls={
  18         "Documentation": "https://werkzeug.palletsprojects.com/",
  19         "Code": "https://github.com/pallets/werkzeug",
  20         "Issue tracker": "https://github.com/pallets/werkzeug/issues",
  21     },
  22     license="BSD-3-Clause",
  23     author="Armin Ronacher",
  24     author_email="armin.ronacher@active-4.com",
  25     maintainer="The Pallets Team",
  26     maintainer_email="contact@palletsprojects.com",
  27     description="The comprehensive WSGI web application library.",
  28     long_description=readme,
  29     classifiers=[
  30         "Development Status :: 5 - Production/Stable",
  31         "Environment :: Web Environment",
  32         "Intended Audience :: Developers",
  33         "License :: OSI Approved :: BSD License",
  34         "Operating System :: OS Independent",
  35         "Programming Language :: Python",
  36         "Programming Language :: Python :: 2",
  37         "Programming Language :: Python :: 2.7",
  38         "Programming Language :: Python :: 3",
  39         "Programming Language :: Python :: 3.4",
  40         "Programming Language :: Python :: 3.5",
  41         "Programming Language :: Python :: 3.6",
  42         "Programming Language :: Python :: 3.7",
  43         "Programming Language :: Python :: Implementation :: CPython",
  44         "Programming Language :: Python :: Implementation :: PyPy",
  45         "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
  46         "Topic :: Internet :: WWW/HTTP :: WSGI",
  47         "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
  48         "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware",
  49         "Topic :: Software Development :: Libraries :: Application Frameworks",
  50         "Topic :: Software Development :: Libraries :: Python Modules",
  51     ],
  52     packages=find_packages("src"),
  53     package_dir={"": "src"},
  54     include_package_data=True,
  55     python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
  56     extras_require={
  57         "watchdog": ["watchdog"],
  58         "termcolor": ["termcolor"],
  59         "dev": [
  60             "pytest",
  61             "coverage",
  62             "tox",
  63             "sphinx",
  64             "pallets-sphinx-themes",
  65             "sphinx-issues",
  66         ],
  67     },
  68 )
  69
  [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
  @@ -36,7 +36,6 @@
           "Programming Language :: Python :: 2",
           "Programming Language :: Python :: 2.7",
           "Programming Language :: Python :: 3",
  -        "Programming Language :: Python :: 3.4",
           "Programming Language :: Python :: 3.5",
           "Programming Language :: Python :: 3.6",
           "Programming Language :: Python :: 3.7",
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -36,7 +36,6 @@\n         \"Programming Language :: Python :: 2\",\n         \"Programming Language :: Python :: 2.7\",\n         \"Programming Language :: Python :: 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", "issue": "Drop Python 3.4 support\nEOL 2019-03-19: https://devguide.python.org/#status-of-python-branches\n", "before_files": [{"content": "import io\nimport re\n\nfrom setuptools import find_packages\nfrom setuptools import setup\n\nwith io.open(\"README.rst\", \"rt\", encoding=\"utf8\") as f:\n    readme = f.read()\n\nwith io.open(\"src/werkzeug/__init__.py\", \"rt\", encoding=\"utf8\") as f:\n    version = re.search(r'__version__ = \"(.*?)\"', f.read(), re.M).group(1)\n\nsetup(\n    name=\"Werkzeug\",\n    version=version,\n    url=\"https://palletsprojects.com/p/werkzeug/\",\n    project_urls={\n        \"Documentation\": \"https://werkzeug.palletsprojects.com/\",\n        \"Code\": \"https://github.com/pallets/werkzeug\",\n        \"Issue tracker\": \"https://github.com/pallets/werkzeug/issues\",\n    },\n    license=\"BSD-3-Clause\",\n    author=\"Armin Ronacher\",\n    author_email=\"armin.ronacher@active-4.com\",\n    maintainer=\"The Pallets Team\",\n    maintainer_email=\"contact@palletsprojects.com\",\n    description=\"The comprehensive WSGI web application library.\",\n    long_description=readme,\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Environment :: Web Environment\",\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Operating System :: OS Independent\",\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.4\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: Implementation :: CPython\",\n        \"Programming Language :: Python :: Implementation :: PyPy\",\n        \"Topic :: Internet :: WWW/HTTP :: Dynamic Content\",\n        \"Topic :: Internet :: WWW/HTTP :: WSGI\",\n        \"Topic :: Internet :: WWW/HTTP :: WSGI :: Application\",\n        \"Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware\",\n        \"Topic :: Software Development :: Libraries :: Application Frameworks\",\n        \"Topic :: Software Development :: Libraries :: Python Modules\",\n    ],\n    packages=find_packages(\"src\"),\n    package_dir={\"\": \"src\"},\n    include_package_data=True,\n    python_requires=\">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*\",\n    extras_require={\n        \"watchdog\": [\"watchdog\"],\n        \"termcolor\": [\"termcolor\"],\n        \"dev\": [\n            \"pytest\",\n            \"coverage\",\n            \"tox\",\n            \"sphinx\",\n            \"pallets-sphinx-themes\",\n            \"sphinx-issues\",\n        ],\n    },\n)\n", "path": "setup.py"}]}