prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Add a description field(s) to setup.py
  This populates the description on PYPI:
  
  https://packaging.python.org/tutorials/distributing-packages/#description
  
  </issue>
  <code>
  [start of setup.py]
  1 """Use the following command to install retriever: python setup.py install"""
  2 from __future__ import absolute_import
  3 
  4 import os
  5 import platform
  6 
  7 from pkg_resources import parse_version
  8 from setuptools import setup, find_packages
  9 
  10 current_platform = platform.system().lower()
  11 extra_includes = []
  12 if current_platform == "windows":
  13     extra_includes += ["pypyodbc"]
  14 
  15 if os.path.exists(".git/hooks"):  # check if we are in git repo
  16     os.system("cp hooks/pre-commit .git/hooks/pre-commit")
  17     os.system("chmod +x .git/hooks/pre-commit")
  18 
  19 app_data = "~/.retriever/scripts"
  20 if os.path.exists(app_data):
  21     os.system("rm -r {}".format(app_data))
  22 
  23 __version__ = 'v2.1.dev'
  24 with open(os.path.join("retriever", "_version.py"), "w") as version_file:
  25     version_file.write("__version__ = " + "'" + __version__ + "'\n")
  26     version_file.close()
  27 
  28 
  29 def clean_version(v):
  30     return parse_version(v).__repr__().lstrip("<Version('").rstrip("')>")
  31 
  32 includes = [
  33                'xlrd',
  34                'future',
  35                'argcomplete',
  36                'pymysql',
  37                'psycopg2',
  38                'sqlite3',
  39            ] + extra_includes
  40 
  41 excludes = [
  42     'pyreadline',
  43     'doctest',
  44     'pickle',
  45     'pdb',
  46     'pywin', 'pywin.debugger',
  47     'pywin.debugger.dbgcon',
  48     'pywin.dialogs', 'pywin.dialogs.list',
  49     'Tkconstants', 'Tkinter', 'tcl', 'tk'
  50 ]
  51 
  52 setup(name='retriever',
  53       version=clean_version(__version__),
  54       description='Data Retriever',
  55       author='Ben Morris, Shivam Negi, Akash Goel, Andrew Zhang, Henry Senyondo, Ethan White',
  56       author_email='ethan@weecology.org',
  57       url='https://github.com/weecology/retriever',
  58       classifiers=['Intended Audience :: Science/Research',
  59                    'License :: OSI Approved :: MIT License',
  60                    'Programming Language :: Python',
  61                    'Programming Language :: Python :: 2',
  62                    'Programming Language :: Python :: 3', ],
  63       packages=find_packages(
  64           exclude=['hooks',
  65                    'docs',
  66                    'tests',
  67                    'scripts',
  68                    'docker',
  69                    ".cache"]),
  70       entry_points={
  71           'console_scripts': [
  72               'retriever = retriever.__main__:main',
  73           ],
  74       },
  75       install_requires=[
  76           'xlrd',
  77           'future',
  78           'argcomplete',
  79           'tqdm'
  80       ],
  81       data_files=[('', ['CITATION'])],
  82       setup_requires=[],
  83       )
  84 
  85 # windows doesn't have bash. No point in using bash-completion
  86 if current_platform != "windows":
  87     # if platform is OS X use "~/.bash_profile"
  88     if current_platform == "darwin":
  89         bash_file = "~/.bash_profile"
  90     # if platform is Linux use "~/.bashrc
  91     elif current_platform == "linux":
  92         bash_file = "~/.bashrc"
  93     # else write and discard
  94     else:
  95         bash_file = "/dev/null"
  96 
  97     argcomplete_command = 'eval "$(register-python-argcomplete retriever)"'
  98     with open(os.path.expanduser(bash_file), "a+") as bashrc:
  99         bashrc.seek(0)
  100         # register retriever for arg-completion if not already registered
  101         # whenever a new shell is spawned
  102         if argcomplete_command not in bashrc.read():
  103             bashrc.write(argcomplete_command + "\n")
  104             bashrc.close()
  105     os.system("activate-global-python-argcomplete")
  106     # register for the current shell
  107     os.system(argcomplete_command)
  108 
  109 try:
  110     from retriever.compile import compile
  111     from retriever.lib.repository import check_for_updates
  112 
  113     check_for_updates(False)
  114     compile()
  115 except:
  116     pass
  117
  [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
  @@ -29,6 +29,7 @@
   def clean_version(v):
       return parse_version(v).__repr__().lstrip("<Version('").rstrip("')>")
   
  +
   includes = [
                  'xlrd',
                  'future',
  @@ -52,6 +53,10 @@
   setup(name='retriever',
         version=clean_version(__version__),
         description='Data Retriever',
  +      long_description=('The Data Retriever is a package manager for data. '
  +                        'It downloads, cleans, and stores publicly available data, '
  +                        'so that analysts spend less time cleaning and managing data, '
  +                        'and more time analyzing it.'),
         author='Ben Morris, Shivam Negi, Akash Goel, Andrew Zhang, Henry Senyondo, Ethan White',
         author_email='ethan@weecology.org',
         url='https://github.com/weecology/retriever',
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -29,6 +29,7 @@\n def clean_version(v):\n     return parse_version(v).__repr__().lstrip(\"<Version('\").rstrip(\"')>\")\n \n+\n includes = [\n                'xlrd',\n                'future',\n@@ -52,6 +53,10 @@\n setup(name='retriever',\n       version=clean_version(__version__),\n       description='Data Retriever',\n+      long_description=('The Data Retriever is a package manager for data. '\n+                        'It downloads, cleans, and stores publicly available data, '\n+                        'so that analysts spend less time cleaning and managing data, '\n+                        'and more time analyzing it.'),\n       author='Ben Morris, Shivam Negi, Akash Goel, Andrew Zhang, Henry Senyondo, Ethan White',\n       author_email='ethan@weecology.org',\n       url='https://github.com/weecology/retriever',\n", "issue": "Add a description field(s) to setup.py\nThis populates the description on PYPI:\r\n\r\nhttps://packaging.python.org/tutorials/distributing-packages/#description\n", "before_files": [{"content": "\"\"\"Use the following command to install retriever: python setup.py install\"\"\"\nfrom __future__ import absolute_import\n\nimport os\nimport platform\n\nfrom pkg_resources import parse_version\nfrom setuptools import setup, find_packages\n\ncurrent_platform = platform.system().lower()\nextra_includes = []\nif current_platform == \"windows\":\n    extra_includes += [\"pypyodbc\"]\n\nif os.path.exists(\".git/hooks\"):  # check if we are in git repo\n    os.system(\"cp hooks/pre-commit .git/hooks/pre-commit\")\n    os.system(\"chmod +x .git/hooks/pre-commit\")\n\napp_data = \"~/.retriever/scripts\"\nif os.path.exists(app_data):\n    os.system(\"rm -r {}\".format(app_data))\n\n__version__ = 'v2.1.dev'\nwith open(os.path.join(\"retriever\", \"_version.py\"), \"w\") as version_file:\n    version_file.write(\"__version__ = \" + \"'\" + __version__ + \"'\\n\")\n    version_file.close()\n\n\ndef clean_version(v):\n    return parse_version(v).__repr__().lstrip(\"<Version('\").rstrip(\"')>\")\n\nincludes = [\n               'xlrd',\n               'future',\n               'argcomplete',\n               'pymysql',\n               'psycopg2',\n               'sqlite3',\n           ] + extra_includes\n\nexcludes = [\n    'pyreadline',\n    'doctest',\n    'pickle',\n    'pdb',\n    'pywin', 'pywin.debugger',\n    'pywin.debugger.dbgcon',\n    'pywin.dialogs', 'pywin.dialogs.list',\n    'Tkconstants', 'Tkinter', 'tcl', 'tk'\n]\n\nsetup(name='retriever',\n      version=clean_version(__version__),\n      description='Data Retriever',\n      author='Ben Morris, Shivam Negi, Akash Goel, Andrew Zhang, Henry Senyondo, Ethan White',\n      author_email='ethan@weecology.org',\n      url='https://github.com/weecology/retriever',\n      classifiers=['Intended Audience :: Science/Research',\n                   'License :: OSI Approved :: MIT License',\n                   'Programming Language :: Python',\n                   'Programming Language :: Python :: 2',\n                   'Programming Language :: Python :: 3', ],\n      packages=find_packages(\n          exclude=['hooks',\n                   'docs',\n                   'tests',\n                   'scripts',\n                   'docker',\n                   \".cache\"]),\n      entry_points={\n          'console_scripts': [\n              'retriever = retriever.__main__:main',\n          ],\n      },\n      install_requires=[\n          'xlrd',\n          'future',\n          'argcomplete',\n          'tqdm'\n      ],\n      data_files=[('', ['CITATION'])],\n      setup_requires=[],\n      )\n\n# windows doesn't have bash. No point in using bash-completion\nif current_platform != \"windows\":\n    # if platform is OS X use \"~/.bash_profile\"\n    if current_platform == \"darwin\":\n        bash_file = \"~/.bash_profile\"\n    # if platform is Linux use \"~/.bashrc\n    elif current_platform == \"linux\":\n        bash_file = \"~/.bashrc\"\n    # else write and discard\n    else:\n        bash_file = \"/dev/null\"\n\n    argcomplete_command = 'eval \"$(register-python-argcomplete retriever)\"'\n    with open(os.path.expanduser(bash_file), \"a+\") as bashrc:\n        bashrc.seek(0)\n        # register retriever for arg-completion if not already registered\n        # whenever a new shell is spawned\n        if argcomplete_command not in bashrc.read():\n            bashrc.write(argcomplete_command + \"\\n\")\n            bashrc.close()\n    os.system(\"activate-global-python-argcomplete\")\n    # register for the current shell\n    os.system(argcomplete_command)\n\ntry:\n    from retriever.compile import compile\n    from retriever.lib.repository import check_for_updates\n\n    check_for_updates(False)\n    compile()\nexcept:\n    pass\n", "path": "setup.py"}]}