prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Drop Python 3.7
  We should consider dropping support for Python 3.7. We are roughly following numpy model (#1457) and numpy itself is 3.8+ now. Same applies to pyproj, which requires 3.8 (and causes some macOS CI failures because of some conda issues). 
  
  I forgot about Python versions when doing #2358 and bumped only packages.
  
  @jorisvandenbossche if you're fine with that, I'll update CI matrix and related things.
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env/python
  2 """Installation script
  3 
  4 """
  5 
  6 import os
  7 
  8 try:
  9     from setuptools import setup
  10 except ImportError:
  11     from distutils.core import setup
  12 
  13 import versioneer
  14 
  15 LONG_DESCRIPTION = """GeoPandas is a project to add support for geographic data to
  16 `pandas`_ objects.
  17 
  18 The goal of GeoPandas is to make working with geospatial data in
  19 python easier. It combines the capabilities of `pandas`_ and `shapely`_,
  20 providing geospatial operations in pandas and a high-level interface
  21 to multiple geometries to shapely. GeoPandas enables you to easily do
  22 operations in python that would otherwise require a spatial database
  23 such as PostGIS.
  24 
  25 .. _pandas: http://pandas.pydata.org
  26 .. _shapely: http://shapely.readthedocs.io/en/latest/
  27 """
  28 
  29 if os.environ.get("READTHEDOCS", False) == "True":
  30     INSTALL_REQUIRES = []
  31 else:
  32     INSTALL_REQUIRES = [
  33         "pandas >= 1.0.0",
  34         "shapely >= 1.7",
  35         "fiona >= 1.8",
  36         "pyproj >= 2.6.1.post1",
  37         "packaging",
  38     ]
  39 
  40 # get all data dirs in the datasets module
  41 data_files = []
  42 
  43 for item in os.listdir("geopandas/datasets"):
  44     if not item.startswith("__"):
  45         if os.path.isdir(os.path.join("geopandas/datasets/", item)):
  46             data_files.append(os.path.join("datasets", item, "*"))
  47         elif item.endswith(".zip"):
  48             data_files.append(os.path.join("datasets", item))
  49 
  50 data_files.append("tests/data/*")
  51 
  52 
  53 setup(
  54     name="geopandas",
  55     version=versioneer.get_version(),
  56     description="Geographic pandas extensions",
  57     license="BSD",
  58     author="GeoPandas contributors",
  59     author_email="kjordahl@alum.mit.edu",
  60     url="http://geopandas.org",
  61     project_urls={
  62         "Source": "https://github.com/geopandas/geopandas",
  63     },
  64     long_description=LONG_DESCRIPTION,
  65     packages=[
  66         "geopandas",
  67         "geopandas.io",
  68         "geopandas.tools",
  69         "geopandas.datasets",
  70         "geopandas.tests",
  71         "geopandas.tools.tests",
  72     ],
  73     package_data={"geopandas": data_files},
  74     python_requires=">=3.7",
  75     install_requires=INSTALL_REQUIRES,
  76     cmdclass=versioneer.get_cmdclass(),
  77 )
  78
  [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
  @@ -71,7 +71,7 @@
           "geopandas.tools.tests",
       ],
       package_data={"geopandas": data_files},
  -    python_requires=">=3.7",
  +    python_requires=">=3.8",
       install_requires=INSTALL_REQUIRES,
       cmdclass=versioneer.get_cmdclass(),
   )
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -71,7 +71,7 @@\n         \"geopandas.tools.tests\",\n     ],\n     package_data={\"geopandas\": data_files},\n-    python_requires=\">=3.7\",\n+    python_requires=\">=3.8\",\n     install_requires=INSTALL_REQUIRES,\n     cmdclass=versioneer.get_cmdclass(),\n )\n", "issue": "Drop Python 3.7\nWe should consider dropping support for Python 3.7. We are roughly following numpy model (#1457) and numpy itself is 3.8+ now. Same applies to pyproj, which requires 3.8 (and causes some macOS CI failures because of some conda issues). \r\n\r\nI forgot about Python versions when doing #2358 and bumped only packages.\r\n\r\n@jorisvandenbossche if you're fine with that, I'll update CI matrix and related things.\n", "before_files": [{"content": "#!/usr/bin/env/python\n\"\"\"Installation script\n\n\"\"\"\n\nimport os\n\ntry:\n    from setuptools import setup\nexcept ImportError:\n    from distutils.core import setup\n\nimport versioneer\n\nLONG_DESCRIPTION = \"\"\"GeoPandas is a project to add support for geographic data to\n`pandas`_ objects.\n\nThe goal of GeoPandas is to make working with geospatial data in\npython easier. It combines the capabilities of `pandas`_ and `shapely`_,\nproviding geospatial operations in pandas and a high-level interface\nto multiple geometries to shapely. GeoPandas enables you to easily do\noperations in python that would otherwise require a spatial database\nsuch as PostGIS.\n\n.. _pandas: http://pandas.pydata.org\n.. _shapely: http://shapely.readthedocs.io/en/latest/\n\"\"\"\n\nif os.environ.get(\"READTHEDOCS\", False) == \"True\":\n    INSTALL_REQUIRES = []\nelse:\n    INSTALL_REQUIRES = [\n        \"pandas >= 1.0.0\",\n        \"shapely >= 1.7\",\n        \"fiona >= 1.8\",\n        \"pyproj >= 2.6.1.post1\",\n        \"packaging\",\n    ]\n\n# get all data dirs in the datasets module\ndata_files = []\n\nfor item in os.listdir(\"geopandas/datasets\"):\n    if not item.startswith(\"__\"):\n        if os.path.isdir(os.path.join(\"geopandas/datasets/\", item)):\n            data_files.append(os.path.join(\"datasets\", item, \"*\"))\n        elif item.endswith(\".zip\"):\n            data_files.append(os.path.join(\"datasets\", item))\n\ndata_files.append(\"tests/data/*\")\n\n\nsetup(\n    name=\"geopandas\",\n    version=versioneer.get_version(),\n    description=\"Geographic pandas extensions\",\n    license=\"BSD\",\n    author=\"GeoPandas contributors\",\n    author_email=\"kjordahl@alum.mit.edu\",\n    url=\"http://geopandas.org\",\n    project_urls={\n        \"Source\": \"https://github.com/geopandas/geopandas\",\n    },\n    long_description=LONG_DESCRIPTION,\n    packages=[\n        \"geopandas\",\n        \"geopandas.io\",\n        \"geopandas.tools\",\n        \"geopandas.datasets\",\n        \"geopandas.tests\",\n        \"geopandas.tools.tests\",\n    ],\n    package_data={\"geopandas\": data_files},\n    python_requires=\">=3.7\",\n    install_requires=INSTALL_REQUIRES,\n    cmdclass=versioneer.get_cmdclass(),\n)\n", "path": "setup.py"}]}