prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  [CT-876] Could we also now remove our upper bound on `MarkupSafe`, which we put in place earlier this year due to incompatibility with Jinja2?
  Remove our upper bound on `MarkupSafe`, which we put in place earlier this year due to incompatibility with Jinja2(#4745).  Also bump minimum requirement to match [Jinja2's requirements](https://github.com/pallets/jinja/blob/1c4066a4fad5aaeb2ac55809d1d38477cd23a0f6/setup.py#L6).
  
  
  </issue>
  <code>
  [start of core/setup.py]
  1 #!/usr/bin/env python
  2 import os
  3 import sys
  4 
  5 if sys.version_info < (3, 7, 2):
  6     print("Error: dbt does not support this version of Python.")
  7     print("Please upgrade to Python 3.7.2 or higher.")
  8     sys.exit(1)
  9 
  10 
  11 from setuptools import setup
  12 
  13 try:
  14     from setuptools import find_namespace_packages
  15 except ImportError:
  16     # the user has a downlevel version of setuptools.
  17     print("Error: dbt requires setuptools v40.1.0 or higher.")
  18     print('Please upgrade setuptools with "pip install --upgrade setuptools" ' "and try again")
  19     sys.exit(1)
  20 
  21 
  22 this_directory = os.path.abspath(os.path.dirname(__file__))
  23 with open(os.path.join(this_directory, "README.md")) as f:
  24     long_description = f.read()
  25 
  26 
  27 package_name = "dbt-core"
  28 package_version = "1.3.0a1"
  29 description = """With dbt, data analysts and engineers can build analytics \
  30 the way engineers build applications."""
  31 
  32 
  33 setup(
  34     name=package_name,
  35     version=package_version,
  36     description=description,
  37     long_description=long_description,
  38     long_description_content_type="text/markdown",
  39     author="dbt Labs",
  40     author_email="info@dbtlabs.com",
  41     url="https://github.com/dbt-labs/dbt-core",
  42     packages=find_namespace_packages(include=["dbt", "dbt.*"]),
  43     include_package_data=True,
  44     test_suite="test",
  45     entry_points={
  46         "console_scripts": [
  47             "dbt = dbt.main:main",
  48         ],
  49     },
  50     install_requires=[
  51         "Jinja2==3.1.2",
  52         "MarkupSafe>=0.23,<2.1",
  53         "agate>=1.6,<1.6.4",
  54         "click>=7.0,<9",
  55         "colorama>=0.3.9,<0.4.6",
  56         "hologram>=0.0.14,<=0.0.15",
  57         "isodate>=0.6,<0.7",
  58         "logbook>=1.5,<1.6",
  59         "mashumaro[msgpack]==3.0.3",
  60         "minimal-snowplow-tracker==0.0.2",
  61         "networkx>=2.3,<2.8.1;python_version<'3.8'",
  62         "networkx>=2.3,<3;python_version>='3.8'",
  63         "packaging>=20.9,<22.0",
  64         "sqlparse>=0.2.3,<0.5",
  65         "dbt-extractor~=0.4.1",
  66         "typing-extensions>=3.7.4",
  67         "werkzeug>=1,<3",
  68         # the following are all to match snowflake-connector-python
  69         "requests<3.0.0",
  70         "idna>=2.5,<4",
  71         "cffi>=1.9,<2.0.0",
  72         "pyyaml>=6.0",
  73     ],
  74     zip_safe=False,
  75     classifiers=[
  76         "Development Status :: 5 - Production/Stable",
  77         "License :: OSI Approved :: Apache Software License",
  78         "Operating System :: Microsoft :: Windows",
  79         "Operating System :: MacOS :: MacOS X",
  80         "Operating System :: POSIX :: Linux",
  81         "Programming Language :: Python :: 3.7",
  82         "Programming Language :: Python :: 3.8",
  83         "Programming Language :: Python :: 3.9",
  84         "Programming Language :: Python :: 3.10",
  85     ],
  86     python_requires=">=3.7.2",
  87 )
  88
  [end of core/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/core/setup.py b/core/setup.py
  --- a/core/setup.py
  +++ b/core/setup.py
  @@ -49,7 +49,6 @@
       },
       install_requires=[
           "Jinja2==3.1.2",
  -        "MarkupSafe>=0.23,<2.1",
           "agate>=1.6,<1.6.4",
           "click>=7.0,<9",
           "colorama>=0.3.9,<0.4.6",
  
verification_info: {"golden_diff": "diff --git a/core/setup.py b/core/setup.py\n--- a/core/setup.py\n+++ b/core/setup.py\n@@ -49,7 +49,6 @@\n     },\n     install_requires=[\n         \"Jinja2==3.1.2\",\n-        \"MarkupSafe>=0.23,<2.1\",\n         \"agate>=1.6,<1.6.4\",\n         \"click>=7.0,<9\",\n         \"colorama>=0.3.9,<0.4.6\",\n", "issue": "[CT-876] Could we also now remove our upper bound on `MarkupSafe`, which we put in place earlier this year due to incompatibility with Jinja2?\nRemove our upper bound on `MarkupSafe`, which we put in place earlier this year due to incompatibility with Jinja2(#4745).  Also bump minimum requirement to match [Jinja2's requirements](https://github.com/pallets/jinja/blob/1c4066a4fad5aaeb2ac55809d1d38477cd23a0f6/setup.py#L6).\r\n\n", "before_files": [{"content": "#!/usr/bin/env python\nimport os\nimport sys\n\nif sys.version_info < (3, 7, 2):\n    print(\"Error: dbt does not support this version of Python.\")\n    print(\"Please upgrade to Python 3.7.2 or higher.\")\n    sys.exit(1)\n\n\nfrom setuptools import setup\n\ntry:\n    from setuptools import find_namespace_packages\nexcept ImportError:\n    # the user has a downlevel version of setuptools.\n    print(\"Error: dbt requires setuptools v40.1.0 or higher.\")\n    print('Please upgrade setuptools with \"pip install --upgrade setuptools\" ' \"and try again\")\n    sys.exit(1)\n\n\nthis_directory = os.path.abspath(os.path.dirname(__file__))\nwith open(os.path.join(this_directory, \"README.md\")) as f:\n    long_description = f.read()\n\n\npackage_name = \"dbt-core\"\npackage_version = \"1.3.0a1\"\ndescription = \"\"\"With dbt, data analysts and engineers can build analytics \\\nthe way engineers build applications.\"\"\"\n\n\nsetup(\n    name=package_name,\n    version=package_version,\n    description=description,\n    long_description=long_description,\n    long_description_content_type=\"text/markdown\",\n    author=\"dbt Labs\",\n    author_email=\"info@dbtlabs.com\",\n    url=\"https://github.com/dbt-labs/dbt-core\",\n    packages=find_namespace_packages(include=[\"dbt\", \"dbt.*\"]),\n    include_package_data=True,\n    test_suite=\"test\",\n    entry_points={\n        \"console_scripts\": [\n            \"dbt = dbt.main:main\",\n        ],\n    },\n    install_requires=[\n        \"Jinja2==3.1.2\",\n        \"MarkupSafe>=0.23,<2.1\",\n        \"agate>=1.6,<1.6.4\",\n        \"click>=7.0,<9\",\n        \"colorama>=0.3.9,<0.4.6\",\n        \"hologram>=0.0.14,<=0.0.15\",\n        \"isodate>=0.6,<0.7\",\n        \"logbook>=1.5,<1.6\",\n        \"mashumaro[msgpack]==3.0.3\",\n        \"minimal-snowplow-tracker==0.0.2\",\n        \"networkx>=2.3,<2.8.1;python_version<'3.8'\",\n        \"networkx>=2.3,<3;python_version>='3.8'\",\n        \"packaging>=20.9,<22.0\",\n        \"sqlparse>=0.2.3,<0.5\",\n        \"dbt-extractor~=0.4.1\",\n        \"typing-extensions>=3.7.4\",\n        \"werkzeug>=1,<3\",\n        # the following are all to match snowflake-connector-python\n        \"requests<3.0.0\",\n        \"idna>=2.5,<4\",\n        \"cffi>=1.9,<2.0.0\",\n        \"pyyaml>=6.0\",\n    ],\n    zip_safe=False,\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Operating System :: Microsoft :: Windows\",\n        \"Operating System :: MacOS :: MacOS X\",\n        \"Operating System :: POSIX :: Linux\",\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    ],\n    python_requires=\">=3.7.2\",\n)\n", "path": "core/setup.py"}]}