prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Clean up outdated references to Python 3.5
  *This is a good first issue for new contributors to take on, if you have any questions, please ask on the task or in our [Gitter room](https://gitter.im/freedomofpress/securedrop)!*
  
  ## Description
  
  SecureDrop now runs on focal, which uses Python 3.8. But there are still references to Python 3.5 that need to be cleaned up. Some should be dropped outright, others should be switched to 3.8.
  
  
  Some examples:
  ```
  $ rg python3\\.5
  install_files/securedrop-grsec-focal/opt/securedrop/paxctld.conf
  98:/usr/bin/python3.5		E
  
  molecule/testinfra/vars/app-qubes-staging.yml
  13:securedrop_venv_site_packages: "{{ securedrop_venv }}/lib/python3.5/site-packages"
  
  molecule/testinfra/vars/prodVM.yml
  12:securedrop_venv_site_packages: "/opt/venvs/securedrop-app-code/lib/python3.5/site-packages"
  
  install_files/ansible-base/roles/build-securedrop-app-code-deb-pkg/files/usr.sbin.apache2
  71:  /etc/python3.5/sitecustomize.py r,
  109:  /usr/local/lib/python3.5/dist-packages/ r,
  117:  /opt/venvs/securedrop-app-code/lib/python3.5/ r,
  118:  /opt/venvs/securedrop-app-code/lib/python3.5/** rm,
  
  securedrop/scripts/rqrequeue
  9:sys.path.insert(0, "/opt/venvs/securedrop-app-code/lib/python3.5/site-packages")  # noqa: E402
  
  securedrop/scripts/shredder
  14:    0, "/opt/venvs/securedrop-app-code/lib/python3.5/site-packages"
  
  securedrop/scripts/source_deleter
  14:    0, "/opt/venvs/securedrop-app-code/lib/python3.5/site-packages"
  $ rg 3\\.5 --type=py
  molecule/builder-focal/tests/test_build_dependencies.py
  6:SECUREDROP_PYTHON_VERSION = os.environ.get("SECUREDROP_PYTHON_VERSION", "3.5")
  
  setup.py
  14:    python_requires=">=3.5",
  ```
  
  </issue>
  <code>
  [start of setup.py]
  1 import setuptools
  2 
  3 long_description = "The SecureDrop whistleblower platform."
  4 
  5 setuptools.setup(
  6     name="securedrop-app-code",
  7     version="2.5.0~rc1",
  8     author="Freedom of the Press Foundation",
  9     author_email="securedrop@freedom.press",
  10     description="SecureDrop Server",
  11     long_description=long_description,
  12     long_description_content_type="text/markdown",
  13     license="AGPLv3+",
  14     python_requires=">=3.5",
  15     url="https://github.com/freedomofpress/securedrop",
  16     classifiers=(
  17         "Development Status :: 5 - Stable",
  18         "Programming Language :: Python :: 3",
  19         "Topic :: Software Development :: Libraries :: Python Modules",
  20         "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
  21         "Intended Audience :: Developers",
  22         "Operating System :: OS Independent",
  23     ),
  24 )
  25
  [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
  @@ -11,7 +11,7 @@
       long_description=long_description,
       long_description_content_type="text/markdown",
       license="AGPLv3+",
  -    python_requires=">=3.5",
  +    python_requires=">=3.8",
       url="https://github.com/freedomofpress/securedrop",
       classifiers=(
           "Development Status :: 5 - Stable",
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -11,7 +11,7 @@\n     long_description=long_description,\n     long_description_content_type=\"text/markdown\",\n     license=\"AGPLv3+\",\n-    python_requires=\">=3.5\",\n+    python_requires=\">=3.8\",\n     url=\"https://github.com/freedomofpress/securedrop\",\n     classifiers=(\n         \"Development Status :: 5 - Stable\",\n", "issue": "Clean up outdated references to Python 3.5\n*This is a good first issue for new contributors to take on, if you have any questions, please ask on the task or in our [Gitter room](https://gitter.im/freedomofpress/securedrop)!*\r\n\r\n## Description\r\n\r\nSecureDrop now runs on focal, which uses Python 3.8. But there are still references to Python 3.5 that need to be cleaned up. Some should be dropped outright, others should be switched to 3.8.\r\n\r\n\r\nSome examples:\r\n```\r\n$ rg python3\\\\.5\r\ninstall_files/securedrop-grsec-focal/opt/securedrop/paxctld.conf\r\n98:/usr/bin/python3.5\t\tE\r\n\r\nmolecule/testinfra/vars/app-qubes-staging.yml\r\n13:securedrop_venv_site_packages: \"{{ securedrop_venv }}/lib/python3.5/site-packages\"\r\n\r\nmolecule/testinfra/vars/prodVM.yml\r\n12:securedrop_venv_site_packages: \"/opt/venvs/securedrop-app-code/lib/python3.5/site-packages\"\r\n\r\ninstall_files/ansible-base/roles/build-securedrop-app-code-deb-pkg/files/usr.sbin.apache2\r\n71:  /etc/python3.5/sitecustomize.py r,\r\n109:  /usr/local/lib/python3.5/dist-packages/ r,\r\n117:  /opt/venvs/securedrop-app-code/lib/python3.5/ r,\r\n118:  /opt/venvs/securedrop-app-code/lib/python3.5/** rm,\r\n\r\nsecuredrop/scripts/rqrequeue\r\n9:sys.path.insert(0, \"/opt/venvs/securedrop-app-code/lib/python3.5/site-packages\")  # noqa: E402\r\n\r\nsecuredrop/scripts/shredder\r\n14:    0, \"/opt/venvs/securedrop-app-code/lib/python3.5/site-packages\"\r\n\r\nsecuredrop/scripts/source_deleter\r\n14:    0, \"/opt/venvs/securedrop-app-code/lib/python3.5/site-packages\"\r\n$ rg 3\\\\.5 --type=py\r\nmolecule/builder-focal/tests/test_build_dependencies.py\r\n6:SECUREDROP_PYTHON_VERSION = os.environ.get(\"SECUREDROP_PYTHON_VERSION\", \"3.5\")\r\n\r\nsetup.py\r\n14:    python_requires=\">=3.5\",\r\n```\n", "before_files": [{"content": "import setuptools\n\nlong_description = \"The SecureDrop whistleblower platform.\"\n\nsetuptools.setup(\n    name=\"securedrop-app-code\",\n    version=\"2.5.0~rc1\",\n    author=\"Freedom of the Press Foundation\",\n    author_email=\"securedrop@freedom.press\",\n    description=\"SecureDrop Server\",\n    long_description=long_description,\n    long_description_content_type=\"text/markdown\",\n    license=\"AGPLv3+\",\n    python_requires=\">=3.5\",\n    url=\"https://github.com/freedomofpress/securedrop\",\n    classifiers=(\n        \"Development Status :: 5 - Stable\",\n        \"Programming Language :: Python :: 3\",\n        \"Topic :: Software Development :: Libraries :: Python Modules\",\n        \"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)\",\n        \"Intended Audience :: Developers\",\n        \"Operating System :: OS Independent\",\n    ),\n)\n", "path": "setup.py"}]}