prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Only keep necessary dependencies in requirements.txt
  Currently, we have one single `requirements.txt` file which contains some unnecessary dependencies used for testing only such as `pytest`, `pytest-cov`, and `mock`. They should not be part of `requirements.txt` and should not be distributed with `elasticdl` Python package.
  
  </issue>
  <code>
  [start of setup.py]
  1 from setuptools import find_packages, setup
  2 
  3 with open("elasticdl/requirements.txt") as f:
  4     requirements = f.read().splitlines()
  5 
  6 setup(
  7     name="elasticdl",
  8     version="develop",
  9     description="A Kubernetes-native Deep Learning Framework",
  10     long_description="ElasticDL is a Kubernetes-native deep learning framework"
  11     " built on top of TensorFlow 2.0 that supports"
  12     " fault-tolerance and elastic scheduling.",
  13     long_description_content_type="text/markdown",
  14     author="Ant Financial",
  15     url="https://elasticdl.org",
  16     install_requires=requirements,
  17     packages=find_packages(exclude=["*test*"]),
  18     package_data={"": ["proto/elasticdl.proto", "docker/*", "Makefile"]},
  19     entry_points={
  20         "console_scripts": ["elasticdl=elasticdl.python.elasticdl.client:main"]
  21     },
  22 )
  23
  [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
  @@ -1,7 +1,11 @@
   from setuptools import find_packages, setup
   
   with open("elasticdl/requirements.txt") as f:
  -    requirements = f.read().splitlines()
  +    required_deps = f.read().splitlines()
  +
  +extras = {}
  +with open("elasticdl/requirements-dev.txt") as f:
  +    extras["develop"] = f.read().splitlines()
   
   setup(
       name="elasticdl",
  @@ -13,7 +17,8 @@
       long_description_content_type="text/markdown",
       author="Ant Financial",
       url="https://elasticdl.org",
  -    install_requires=requirements,
  +    install_requires=required_deps,
  +    extras_require=extras,
       packages=find_packages(exclude=["*test*"]),
       package_data={"": ["proto/elasticdl.proto", "docker/*", "Makefile"]},
       entry_points={
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -1,7 +1,11 @@\n from setuptools import find_packages, setup\n \n with open(\"elasticdl/requirements.txt\") as f:\n-    requirements = f.read().splitlines()\n+    required_deps = f.read().splitlines()\n+\n+extras = {}\n+with open(\"elasticdl/requirements-dev.txt\") as f:\n+    extras[\"develop\"] = f.read().splitlines()\n \n setup(\n     name=\"elasticdl\",\n@@ -13,7 +17,8 @@\n     long_description_content_type=\"text/markdown\",\n     author=\"Ant Financial\",\n     url=\"https://elasticdl.org\",\n-    install_requires=requirements,\n+    install_requires=required_deps,\n+    extras_require=extras,\n     packages=find_packages(exclude=[\"*test*\"]),\n     package_data={\"\": [\"proto/elasticdl.proto\", \"docker/*\", \"Makefile\"]},\n     entry_points={\n", "issue": "Only keep necessary dependencies in requirements.txt\nCurrently, we have one single `requirements.txt` file which contains some unnecessary dependencies used for testing only such as `pytest`, `pytest-cov`, and `mock`. They should not be part of `requirements.txt` and should not be distributed with `elasticdl` Python package.\n", "before_files": [{"content": "from setuptools import find_packages, setup\n\nwith open(\"elasticdl/requirements.txt\") as f:\n    requirements = f.read().splitlines()\n\nsetup(\n    name=\"elasticdl\",\n    version=\"develop\",\n    description=\"A Kubernetes-native Deep Learning Framework\",\n    long_description=\"ElasticDL is a Kubernetes-native deep learning framework\"\n    \" built on top of TensorFlow 2.0 that supports\"\n    \" fault-tolerance and elastic scheduling.\",\n    long_description_content_type=\"text/markdown\",\n    author=\"Ant Financial\",\n    url=\"https://elasticdl.org\",\n    install_requires=requirements,\n    packages=find_packages(exclude=[\"*test*\"]),\n    package_data={\"\": [\"proto/elasticdl.proto\", \"docker/*\", \"Makefile\"]},\n    entry_points={\n        \"console_scripts\": [\"elasticdl=elasticdl.python.elasticdl.client:main\"]\n    },\n)\n", "path": "setup.py"}]}