prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Update CONTRIBUTING, README and package metadata
  ### Description:
  
  - [x] Update `CONTRIBUTING.md` to mention the usage of `nox` instead of `tox`
  - [x] Reorganize `README.md`
  - [x] Update `setup.py` to add links to the project
  CI/CD: Tox -> Nox
  We are python project, and working with python files should be easier for any python developer, over working with text configuration in tox.
  
  </issue>
  <code>
  [start of noxfile.py]
  1 """Nox tool configuration file.
  2 
  3 Nox is Tox tool replacement.
  4 """
  5 import shutil
  6 from pathlib import Path
  7 
  8 import nox
  9 
  10 nox.options.keywords = "not docs"
  11 
  12 
  13 def base_install(session):
  14     """Create basic environment setup for tests and linting."""
  15     session.install("-r", "test_requirements.txt")
  16     session.install("-e", ".")
  17     return session
  18 
  19 
  20 @nox.session(python="3.10")
  21 def lint(session):
  22     """Run linting check locally."""
  23     session.install("pre-commit")
  24     session.run("pre-commit", "run", "-a")
  25 
  26 
  27 @nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11"])
  28 def tests(session):
  29     """Run test suite with pytest."""
  30     session = base_install(session)
  31     session.run(
  32         "pytest",
  33         "--cov-report=html",
  34         "--cov-report=xml",
  35         "--cov-branch",
  36         "--cov-fail-under=100",
  37     )
  38 
  39 
  40 @nox.session(python=["3.7", "3.8", "3.9", "3.10", "3.11"])
  41 def safety_tests(session):
  42     """Run safety tests."""
  43     session = base_install(session)
  44     session.run("safety", "check", "--full-report")
  45 
  46 
  47 @nox.session(python="3.10")
  48 def documentation_tests(session):
  49     """Run documentation tests."""
  50     return docs(session, batch_run=True)
  51 
  52 
  53 @nox.session(python="3.10")
  54 def docs(session, batch_run: bool = False):
  55     """Build the documentation or serve documentation interactively."""
  56     shutil.rmtree(Path("docs").joinpath("_build"), ignore_errors=True)
  57     session.install("-r", "docs/requirements.txt")
  58     session.install("-e", ".")
  59     session.cd("docs")
  60     sphinx_args = ["-b", "html", "-W", ".", "_build/html"]
  61 
  62     if not session.interactive or batch_run:
  63         sphinx_cmd = "sphinx-build"
  64     else:
  65         sphinx_cmd = "sphinx-autobuild"
  66         sphinx_args.extend(
  67             [
  68                 "--open-browser",
  69                 "--port",
  70                 "9812",
  71                 "--watch",
  72                 "../*.md",
  73                 "--watch",
  74                 "../*.rst",
  75                 "--watch",
  76                 "../*.py",
  77                 "--watch",
  78                 "../cookiecutter",
  79             ]
  80         )
  81 
  82     session.run(sphinx_cmd, *sphinx_args)
  83
  [end of noxfile.py]
  [start of setup.py]
  1 """cookiecutter distutils configuration."""
  2 from setuptools import setup
  3 
  4 version = "2.1.2.dev0"
  5 
  6 with open('README.md', encoding='utf-8') as readme_file:
  7     readme = readme_file.read()
  8 
  9 requirements = [
  10     'binaryornot>=0.4.4',
  11     'Jinja2>=2.7,<4.0.0',
  12     'click>=7.0,<9.0.0',
  13     'pyyaml>=5.3.1',
  14     'jinja2-time>=0.2.0',
  15     'python-slugify>=4.0.0',
  16     'requests>=2.23.0',
  17 ]
  18 
  19 setup(
  20     name='cookiecutter',
  21     version=version,
  22     description=(
  23         'A command-line utility that creates projects from project '
  24         'templates, e.g. creating a Python package project from a '
  25         'Python package project template.'
  26     ),
  27     long_description=readme,
  28     long_description_content_type='text/markdown',
  29     author='Audrey Feldroy',
  30     author_email='audreyr@gmail.com',
  31     url='https://github.com/cookiecutter/cookiecutter',
  32     packages=['cookiecutter'],
  33     package_dir={'cookiecutter': 'cookiecutter'},
  34     entry_points={'console_scripts': ['cookiecutter = cookiecutter.__main__:main']},
  35     include_package_data=True,
  36     python_requires='>=3.7',
  37     install_requires=requirements,
  38     license='BSD',
  39     zip_safe=False,
  40     classifiers=[
  41         "Development Status :: 5 - Production/Stable",
  42         "Environment :: Console",
  43         "Intended Audience :: Developers",
  44         "Natural Language :: English",
  45         "License :: OSI Approved :: BSD License",
  46         "Programming Language :: Python :: 3 :: Only",
  47         "Programming Language :: Python :: 3",
  48         "Programming Language :: Python :: 3.7",
  49         "Programming Language :: Python :: 3.8",
  50         "Programming Language :: Python :: 3.9",
  51         "Programming Language :: Python :: 3.10",
  52         "Programming Language :: Python :: 3.11",
  53         "Programming Language :: Python :: Implementation :: CPython",
  54         "Programming Language :: Python :: Implementation :: PyPy",
  55         "Programming Language :: Python",
  56         "Topic :: Software Development",
  57     ],
  58     keywords=[
  59         "cookiecutter",
  60         "Python",
  61         "projects",
  62         "project templates",
  63         "Jinja2",
  64         "skeleton",
  65         "scaffolding",
  66         "project directory",
  67         "package",
  68         "packaging",
  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/noxfile.py b/noxfile.py
  --- a/noxfile.py
  +++ b/noxfile.py
  @@ -28,12 +28,14 @@
   def tests(session):
       """Run test suite with pytest."""
       session = base_install(session)
  +    posargs = session.posargs or ""
       session.run(
           "pytest",
           "--cov-report=html",
           "--cov-report=xml",
           "--cov-branch",
           "--cov-fail-under=100",
  +        *posargs,
       )
   
   
  diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -29,6 +29,11 @@
       author='Audrey Feldroy',
       author_email='audreyr@gmail.com',
       url='https://github.com/cookiecutter/cookiecutter',
  +    project_urls={
  +        "Documentation": "https://cookiecutter.readthedocs.io",
  +        "Issues": "https://github.com/cookiecutter/cookiecutter/issues",
  +        "Discord": "https://discord.gg/9BrxzPKuEW",
  +    },
       packages=['cookiecutter'],
       package_dir={'cookiecutter': 'cookiecutter'},
       entry_points={'console_scripts': ['cookiecutter = cookiecutter.__main__:main']},
  
verification_info: {"golden_diff": "diff --git a/noxfile.py b/noxfile.py\n--- a/noxfile.py\n+++ b/noxfile.py\n@@ -28,12 +28,14 @@\n def tests(session):\n     \"\"\"Run test suite with pytest.\"\"\"\n     session = base_install(session)\n+    posargs = session.posargs or \"\"\n     session.run(\n         \"pytest\",\n         \"--cov-report=html\",\n         \"--cov-report=xml\",\n         \"--cov-branch\",\n         \"--cov-fail-under=100\",\n+        *posargs,\n     )\n \n \ndiff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -29,6 +29,11 @@\n     author='Audrey Feldroy',\n     author_email='audreyr@gmail.com',\n     url='https://github.com/cookiecutter/cookiecutter',\n+    project_urls={\n+        \"Documentation\": \"https://cookiecutter.readthedocs.io\",\n+        \"Issues\": \"https://github.com/cookiecutter/cookiecutter/issues\",\n+        \"Discord\": \"https://discord.gg/9BrxzPKuEW\",\n+    },\n     packages=['cookiecutter'],\n     package_dir={'cookiecutter': 'cookiecutter'},\n     entry_points={'console_scripts': ['cookiecutter = cookiecutter.__main__:main']},\n", "issue": "Update CONTRIBUTING, README and package metadata\n### Description:\r\n\r\n- [x] Update `CONTRIBUTING.md` to mention the usage of `nox` instead of `tox`\r\n- [x] Reorganize `README.md`\r\n- [x] Update `setup.py` to add links to the project\nCI/CD: Tox -> Nox\nWe are python project, and working with python files should be easier for any python developer, over working with text configuration in tox.\n", "before_files": [{"content": "\"\"\"Nox tool configuration file.\n\nNox is Tox tool replacement.\n\"\"\"\nimport shutil\nfrom pathlib import Path\n\nimport nox\n\nnox.options.keywords = \"not docs\"\n\n\ndef base_install(session):\n    \"\"\"Create basic environment setup for tests and linting.\"\"\"\n    session.install(\"-r\", \"test_requirements.txt\")\n    session.install(\"-e\", \".\")\n    return session\n\n\n@nox.session(python=\"3.10\")\ndef lint(session):\n    \"\"\"Run linting check locally.\"\"\"\n    session.install(\"pre-commit\")\n    session.run(\"pre-commit\", \"run\", \"-a\")\n\n\n@nox.session(python=[\"3.7\", \"3.8\", \"3.9\", \"3.10\", \"3.11\"])\ndef tests(session):\n    \"\"\"Run test suite with pytest.\"\"\"\n    session = base_install(session)\n    session.run(\n        \"pytest\",\n        \"--cov-report=html\",\n        \"--cov-report=xml\",\n        \"--cov-branch\",\n        \"--cov-fail-under=100\",\n    )\n\n\n@nox.session(python=[\"3.7\", \"3.8\", \"3.9\", \"3.10\", \"3.11\"])\ndef safety_tests(session):\n    \"\"\"Run safety tests.\"\"\"\n    session = base_install(session)\n    session.run(\"safety\", \"check\", \"--full-report\")\n\n\n@nox.session(python=\"3.10\")\ndef documentation_tests(session):\n    \"\"\"Run documentation tests.\"\"\"\n    return docs(session, batch_run=True)\n\n\n@nox.session(python=\"3.10\")\ndef docs(session, batch_run: bool = False):\n    \"\"\"Build the documentation or serve documentation interactively.\"\"\"\n    shutil.rmtree(Path(\"docs\").joinpath(\"_build\"), ignore_errors=True)\n    session.install(\"-r\", \"docs/requirements.txt\")\n    session.install(\"-e\", \".\")\n    session.cd(\"docs\")\n    sphinx_args = [\"-b\", \"html\", \"-W\", \".\", \"_build/html\"]\n\n    if not session.interactive or batch_run:\n        sphinx_cmd = \"sphinx-build\"\n    else:\n        sphinx_cmd = \"sphinx-autobuild\"\n        sphinx_args.extend(\n            [\n                \"--open-browser\",\n                \"--port\",\n                \"9812\",\n                \"--watch\",\n                \"../*.md\",\n                \"--watch\",\n                \"../*.rst\",\n                \"--watch\",\n                \"../*.py\",\n                \"--watch\",\n                \"../cookiecutter\",\n            ]\n        )\n\n    session.run(sphinx_cmd, *sphinx_args)\n", "path": "noxfile.py"}, {"content": "\"\"\"cookiecutter distutils configuration.\"\"\"\nfrom setuptools import setup\n\nversion = \"2.1.2.dev0\"\n\nwith open('README.md', encoding='utf-8') as readme_file:\n    readme = readme_file.read()\n\nrequirements = [\n    'binaryornot>=0.4.4',\n    'Jinja2>=2.7,<4.0.0',\n    'click>=7.0,<9.0.0',\n    'pyyaml>=5.3.1',\n    'jinja2-time>=0.2.0',\n    'python-slugify>=4.0.0',\n    'requests>=2.23.0',\n]\n\nsetup(\n    name='cookiecutter',\n    version=version,\n    description=(\n        'A command-line utility that creates projects from project '\n        'templates, e.g. creating a Python package project from a '\n        'Python package project template.'\n    ),\n    long_description=readme,\n    long_description_content_type='text/markdown',\n    author='Audrey Feldroy',\n    author_email='audreyr@gmail.com',\n    url='https://github.com/cookiecutter/cookiecutter',\n    packages=['cookiecutter'],\n    package_dir={'cookiecutter': 'cookiecutter'},\n    entry_points={'console_scripts': ['cookiecutter = cookiecutter.__main__:main']},\n    include_package_data=True,\n    python_requires='>=3.7',\n    install_requires=requirements,\n    license='BSD',\n    zip_safe=False,\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Environment :: Console\",\n        \"Intended Audience :: Developers\",\n        \"Natural Language :: English\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Programming Language :: Python :: 3 :: Only\",\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        \"Programming Language :: Python :: 3.11\",\n        \"Programming Language :: Python :: Implementation :: CPython\",\n        \"Programming Language :: Python :: Implementation :: PyPy\",\n        \"Programming Language :: Python\",\n        \"Topic :: Software Development\",\n    ],\n    keywords=[\n        \"cookiecutter\",\n        \"Python\",\n        \"projects\",\n        \"project templates\",\n        \"Jinja2\",\n        \"skeleton\",\n        \"scaffolding\",\n        \"project directory\",\n        \"package\",\n        \"packaging\",\n    ],\n)\n", "path": "setup.py"}]}