prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Add `project_urls` to `setup.py`
  This would allow us to provide links to our GitHub repository etc. in a sidebar on PyPI.
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env python
  2 
  3 from setuptools import find_packages, setup
  4 import fastentrypoints   # Monkey-patches setuptools.
  5 
  6 from get_version import __version__
  7 
  8 os.chdir(os.path.split(os.path.abspath(__file__))[0])
  9 
  10 PKG = "hy"
  11 
  12 long_description = """Hy is a Python <--> Lisp layer. It helps
  13 make things work nicer, and lets Python and the Hy lisp variant play
  14 nice together. """
  15 
  16 setup(
  17     name=PKG,
  18     version=__version__,
  19     install_requires=[
  20         'rply>=0.7.7',
  21         'funcparserlib>=1.0.0a0',
  22         'colorama',
  23         'astor>=0.8 ; python_version < "3.9"',
  24     ],
  25     python_requires = '>= 3.7, <= 3.10',
  26     entry_points={
  27         'console_scripts': [
  28             'hy = hy.cmdline:hy_main',
  29             'hy3 = hy.cmdline:hy_main',
  30             'hyc = hy.cmdline:hyc_main',
  31             'hyc3 = hy.cmdline:hyc_main',
  32             'hy2py = hy.cmdline:hy2py_main',
  33             'hy2py3 = hy.cmdline:hy2py_main',
  34         ]
  35     },
  36     packages=find_packages(exclude=['tests*']),
  37     package_data={
  38         'hy': ['*.hy', '__pycache__/*'],
  39         'hy.contrib': ['*.hy', '__pycache__/*'],
  40         'hy.core': ['*.hy', '__pycache__/*'],
  41         'hy.extra': ['*.hy', '__pycache__/*'],
  42     },
  43     data_files=[
  44         ('get_version', ['get_version.py'])
  45     ],
  46     author="Paul Tagliamonte",
  47     author_email="tag@pault.ag",
  48     long_description=long_description,
  49     description='Lisp and Python love each other.',
  50     license="Expat",
  51     url="http://hylang.org/",
  52     platforms=['any'],
  53     classifiers=[
  54         "Development Status :: 4 - Beta",
  55         "Intended Audience :: Developers",
  56         "License :: DFSG approved",
  57         "License :: OSI Approved :: MIT License",  # Really "Expat". Ugh.
  58         "Operating System :: OS Independent",
  59         "Programming Language :: Lisp",
  60         "Programming Language :: Python",
  61         "Programming Language :: Python :: 3",
  62         "Programming Language :: Python :: 3.7",
  63         "Programming Language :: Python :: 3.8",
  64         "Programming Language :: Python :: 3.9",
  65         "Programming Language :: Python :: 3.10",
  66         "Topic :: Software Development :: Code Generators",
  67         "Topic :: Software Development :: Compilers",
  68         "Topic :: Software Development :: Libraries",
  69     ]
  70 )
  71
  [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
  @@ -66,5 +66,9 @@
           "Topic :: Software Development :: Code Generators",
           "Topic :: Software Development :: Compilers",
           "Topic :: Software Development :: Libraries",
  -    ]
  +    ],
  +    project_urls={
  +        "Documentation": "https://docs.hylang.org/",
  +        "Source": "https://github.com/hylang/hy",
  +    }
   )
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -66,5 +66,9 @@\n         \"Topic :: Software Development :: Code Generators\",\n         \"Topic :: Software Development :: Compilers\",\n         \"Topic :: Software Development :: Libraries\",\n-    ]\n+    ],\n+    project_urls={\n+        \"Documentation\": \"https://docs.hylang.org/\",\n+        \"Source\": \"https://github.com/hylang/hy\",\n+    }\n )\n", "issue": "Add `project_urls` to `setup.py`\nThis would allow us to provide links to our GitHub repository etc. in a sidebar on PyPI.\n", "before_files": [{"content": "#!/usr/bin/env python\n\nfrom setuptools import find_packages, setup\nimport fastentrypoints   # Monkey-patches setuptools.\n\nfrom get_version import __version__\n\nos.chdir(os.path.split(os.path.abspath(__file__))[0])\n\nPKG = \"hy\"\n\nlong_description = \"\"\"Hy is a Python <--> Lisp layer. It helps\nmake things work nicer, and lets Python and the Hy lisp variant play\nnice together. \"\"\"\n\nsetup(\n    name=PKG,\n    version=__version__,\n    install_requires=[\n        'rply>=0.7.7',\n        'funcparserlib>=1.0.0a0',\n        'colorama',\n        'astor>=0.8 ; python_version < \"3.9\"',\n    ],\n    python_requires = '>= 3.7, <= 3.10',\n    entry_points={\n        'console_scripts': [\n            'hy = hy.cmdline:hy_main',\n            'hy3 = hy.cmdline:hy_main',\n            'hyc = hy.cmdline:hyc_main',\n            'hyc3 = hy.cmdline:hyc_main',\n            'hy2py = hy.cmdline:hy2py_main',\n            'hy2py3 = hy.cmdline:hy2py_main',\n        ]\n    },\n    packages=find_packages(exclude=['tests*']),\n    package_data={\n        'hy': ['*.hy', '__pycache__/*'],\n        'hy.contrib': ['*.hy', '__pycache__/*'],\n        'hy.core': ['*.hy', '__pycache__/*'],\n        'hy.extra': ['*.hy', '__pycache__/*'],\n    },\n    data_files=[\n        ('get_version', ['get_version.py'])\n    ],\n    author=\"Paul Tagliamonte\",\n    author_email=\"tag@pault.ag\",\n    long_description=long_description,\n    description='Lisp and Python love each other.',\n    license=\"Expat\",\n    url=\"http://hylang.org/\",\n    platforms=['any'],\n    classifiers=[\n        \"Development Status :: 4 - Beta\",\n        \"Intended Audience :: Developers\",\n        \"License :: DFSG approved\",\n        \"License :: OSI Approved :: MIT License\",  # Really \"Expat\". Ugh.\n        \"Operating System :: OS Independent\",\n        \"Programming Language :: Lisp\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Topic :: Software Development :: Code Generators\",\n        \"Topic :: Software Development :: Compilers\",\n        \"Topic :: Software Development :: Libraries\",\n    ]\n)\n", "path": "setup.py"}]}