prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  typing issue with __version_info__ += __parsed_version__.pre
  mypy issue:
  
  ```
      __version_info__ += __parsed_version__.pre
  ```
  
  ```
  src/webargs/__init__.py:14: error: Unsupported operand types for + ("Tuple[int, ...]" and "Tuple[str, int]")
  ```
  
  Not sure what the problem is. I'm tempted to just add a `# type: ignore`. Any better idea, anyone?
  
  </issue>
  <code>
  [start of src/webargs/__init__.py]
  1 from packaging.version import Version
  2 from marshmallow.utils import missing
  3 
  4 # Make marshmallow's validation functions importable from webargs
  5 from marshmallow import validate
  6 
  7 from webargs.core import ValidationError
  8 from webargs import fields
  9 
  10 __version__ = "8.0.1"
  11 __parsed_version__ = Version(__version__)
  12 __version_info__ = __parsed_version__.release
  13 if __parsed_version__.pre:
  14     __version_info__ += __parsed_version__.pre
  15 __all__ = ("ValidationError", "fields", "missing", "validate")
  16
  [end of src/webargs/__init__.py]
  [start of setup.py]
  1 import re
  2 from setuptools import setup, find_packages
  3 
  4 FRAMEWORKS = [
  5     "Flask>=0.12.5",
  6     "Django>=2.2.0",
  7     "bottle>=0.12.13",
  8     "tornado>=4.5.2",
  9     "pyramid>=1.9.1",
  10     "falcon>=2.0.0",
  11     "aiohttp>=3.0.8",
  12 ]
  13 EXTRAS_REQUIRE = {
  14     "frameworks": FRAMEWORKS,
  15     "tests": [
  16         "pytest",
  17         "webtest==3.0.0",
  18         "webtest-aiohttp==2.0.0",
  19         "pytest-aiohttp>=0.3.0",
  20     ]
  21     + FRAMEWORKS,
  22     "lint": [
  23         "mypy==0.910",
  24         "flake8==4.0.1",
  25         "flake8-bugbear==21.11.29",
  26         "pre-commit~=2.4",
  27     ],
  28     "docs": [
  29         "Sphinx==4.3.2",
  30         "sphinx-issues==2.0.0",
  31         "furo==2022.1.2",
  32     ]
  33     + FRAMEWORKS,
  34 }
  35 EXTRAS_REQUIRE["dev"] = EXTRAS_REQUIRE["tests"] + EXTRAS_REQUIRE["lint"] + ["tox"]
  36 
  37 
  38 def find_version(fname):
  39     """Attempts to find the version number in the file names fname.
  40     Raises RuntimeError if not found.
  41     """
  42     version = ""
  43     with open(fname) as fp:
  44         reg = re.compile(r'__version__ = [\'"]([^\'"]*)[\'"]')
  45         for line in fp:
  46             m = reg.match(line)
  47             if m:
  48                 version = m.group(1)
  49                 break
  50     if not version:
  51         raise RuntimeError("Cannot find version information")
  52     return version
  53 
  54 
  55 def read(fname):
  56     with open(fname) as fp:
  57         content = fp.read()
  58     return content
  59 
  60 
  61 setup(
  62     name="webargs",
  63     version=find_version("src/webargs/__init__.py"),
  64     description=(
  65         "Declarative parsing and validation of HTTP request objects, "
  66         "with built-in support for popular web frameworks, including "
  67         "Flask, Django, Bottle, Tornado, Pyramid, Falcon, and aiohttp."
  68     ),
  69     long_description=read("README.rst"),
  70     author="Steven Loria",
  71     author_email="sloria1@gmail.com",
  72     url="https://github.com/marshmallow-code/webargs",
  73     packages=find_packages("src"),
  74     package_dir={"": "src"},
  75     package_data={"webargs": ["py.typed"]},
  76     install_requires=["marshmallow>=3.0.0", "packaging"],
  77     extras_require=EXTRAS_REQUIRE,
  78     license="MIT",
  79     zip_safe=False,
  80     keywords=(
  81         "webargs",
  82         "http",
  83         "flask",
  84         "django",
  85         "bottle",
  86         "tornado",
  87         "aiohttp",
  88         "request",
  89         "arguments",
  90         "validation",
  91         "parameters",
  92         "rest",
  93         "api",
  94         "marshmallow",
  95     ),
  96     python_requires=">=3.7",
  97     classifiers=[
  98         "Development Status :: 5 - Production/Stable",
  99         "Intended Audience :: Developers",
  100         "License :: OSI Approved :: MIT License",
  101         "Natural Language :: English",
  102         "Programming Language :: Python :: 3",
  103         "Programming Language :: Python :: 3.7",
  104         "Programming Language :: Python :: 3.8",
  105         "Programming Language :: Python :: 3.9",
  106         "Programming Language :: Python :: 3.10",
  107         "Programming Language :: Python :: 3 :: Only",
  108         "Topic :: Internet :: WWW/HTTP :: Dynamic Content",
  109         "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
  110     ],
  111     test_suite="tests",
  112     project_urls={
  113         "Changelog": "https://webargs.readthedocs.io/en/latest/changelog.html",
  114         "Issues": "https://github.com/marshmallow-code/webargs/issues",
  115         "Funding": "https://opencollective.com/marshmallow",
  116         "Tidelift": "https://tidelift.com/subscription/pkg/pypi-webargs?utm_source=pypi-marshmallow&utm_medium=pypi",  # noqa
  117     },
  118 )
  119
  [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
  @@ -20,7 +20,7 @@
       ]
       + FRAMEWORKS,
       "lint": [
  -        "mypy==0.910",
  +        "mypy==0.930",
           "flake8==4.0.1",
           "flake8-bugbear==21.11.29",
           "pre-commit~=2.4",
  diff --git a/src/webargs/__init__.py b/src/webargs/__init__.py
  --- a/src/webargs/__init__.py
  +++ b/src/webargs/__init__.py
  @@ -1,3 +1,5 @@
  +from __future__ import annotations
  +
   from packaging.version import Version
   from marshmallow.utils import missing
   
  @@ -9,7 +11,9 @@
   
   __version__ = "8.0.1"
   __parsed_version__ = Version(__version__)
  -__version_info__ = __parsed_version__.release
  +__version_info__: tuple[int, int, int] | tuple[
  +    int, int, int, str, int
  +] = __parsed_version__.release  # type: ignore[assignment]
   if __parsed_version__.pre:
  -    __version_info__ += __parsed_version__.pre
  +    __version_info__ += __parsed_version__.pre  # type: ignore[assignment]
   __all__ = ("ValidationError", "fields", "missing", "validate")
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -20,7 +20,7 @@\n     ]\n     + FRAMEWORKS,\n     \"lint\": [\n-        \"mypy==0.910\",\n+        \"mypy==0.930\",\n         \"flake8==4.0.1\",\n         \"flake8-bugbear==21.11.29\",\n         \"pre-commit~=2.4\",\ndiff --git a/src/webargs/__init__.py b/src/webargs/__init__.py\n--- a/src/webargs/__init__.py\n+++ b/src/webargs/__init__.py\n@@ -1,3 +1,5 @@\n+from __future__ import annotations\n+\n from packaging.version import Version\n from marshmallow.utils import missing\n \n@@ -9,7 +11,9 @@\n \n __version__ = \"8.0.1\"\n __parsed_version__ = Version(__version__)\n-__version_info__ = __parsed_version__.release\n+__version_info__: tuple[int, int, int] | tuple[\n+    int, int, int, str, int\n+] = __parsed_version__.release  # type: ignore[assignment]\n if __parsed_version__.pre:\n-    __version_info__ += __parsed_version__.pre\n+    __version_info__ += __parsed_version__.pre  # type: ignore[assignment]\n __all__ = (\"ValidationError\", \"fields\", \"missing\", \"validate\")\n", "issue": "typing issue with __version_info__ += __parsed_version__.pre\nmypy issue:\r\n\r\n```\r\n    __version_info__ += __parsed_version__.pre\r\n```\r\n\r\n```\r\nsrc/webargs/__init__.py:14: error: Unsupported operand types for + (\"Tuple[int, ...]\" and \"Tuple[str, int]\")\r\n```\r\n\r\nNot sure what the problem is. I'm tempted to just add a `# type: ignore`. Any better idea, anyone?\n", "before_files": [{"content": "from packaging.version import Version\nfrom marshmallow.utils import missing\n\n# Make marshmallow's validation functions importable from webargs\nfrom marshmallow import validate\n\nfrom webargs.core import ValidationError\nfrom webargs import fields\n\n__version__ = \"8.0.1\"\n__parsed_version__ = Version(__version__)\n__version_info__ = __parsed_version__.release\nif __parsed_version__.pre:\n    __version_info__ += __parsed_version__.pre\n__all__ = (\"ValidationError\", \"fields\", \"missing\", \"validate\")\n", "path": "src/webargs/__init__.py"}, {"content": "import re\nfrom setuptools import setup, find_packages\n\nFRAMEWORKS = [\n    \"Flask>=0.12.5\",\n    \"Django>=2.2.0\",\n    \"bottle>=0.12.13\",\n    \"tornado>=4.5.2\",\n    \"pyramid>=1.9.1\",\n    \"falcon>=2.0.0\",\n    \"aiohttp>=3.0.8\",\n]\nEXTRAS_REQUIRE = {\n    \"frameworks\": FRAMEWORKS,\n    \"tests\": [\n        \"pytest\",\n        \"webtest==3.0.0\",\n        \"webtest-aiohttp==2.0.0\",\n        \"pytest-aiohttp>=0.3.0\",\n    ]\n    + FRAMEWORKS,\n    \"lint\": [\n        \"mypy==0.910\",\n        \"flake8==4.0.1\",\n        \"flake8-bugbear==21.11.29\",\n        \"pre-commit~=2.4\",\n    ],\n    \"docs\": [\n        \"Sphinx==4.3.2\",\n        \"sphinx-issues==2.0.0\",\n        \"furo==2022.1.2\",\n    ]\n    + FRAMEWORKS,\n}\nEXTRAS_REQUIRE[\"dev\"] = EXTRAS_REQUIRE[\"tests\"] + EXTRAS_REQUIRE[\"lint\"] + [\"tox\"]\n\n\ndef find_version(fname):\n    \"\"\"Attempts to find the version number in the file names fname.\n    Raises RuntimeError if not found.\n    \"\"\"\n    version = \"\"\n    with open(fname) as fp:\n        reg = re.compile(r'__version__ = [\\'\"]([^\\'\"]*)[\\'\"]')\n        for line in fp:\n            m = reg.match(line)\n            if m:\n                version = m.group(1)\n                break\n    if not version:\n        raise RuntimeError(\"Cannot find version information\")\n    return version\n\n\ndef read(fname):\n    with open(fname) as fp:\n        content = fp.read()\n    return content\n\n\nsetup(\n    name=\"webargs\",\n    version=find_version(\"src/webargs/__init__.py\"),\n    description=(\n        \"Declarative parsing and validation of HTTP request objects, \"\n        \"with built-in support for popular web frameworks, including \"\n        \"Flask, Django, Bottle, Tornado, Pyramid, Falcon, and aiohttp.\"\n    ),\n    long_description=read(\"README.rst\"),\n    author=\"Steven Loria\",\n    author_email=\"sloria1@gmail.com\",\n    url=\"https://github.com/marshmallow-code/webargs\",\n    packages=find_packages(\"src\"),\n    package_dir={\"\": \"src\"},\n    package_data={\"webargs\": [\"py.typed\"]},\n    install_requires=[\"marshmallow>=3.0.0\", \"packaging\"],\n    extras_require=EXTRAS_REQUIRE,\n    license=\"MIT\",\n    zip_safe=False,\n    keywords=(\n        \"webargs\",\n        \"http\",\n        \"flask\",\n        \"django\",\n        \"bottle\",\n        \"tornado\",\n        \"aiohttp\",\n        \"request\",\n        \"arguments\",\n        \"validation\",\n        \"parameters\",\n        \"rest\",\n        \"api\",\n        \"marshmallow\",\n    ),\n    python_requires=\">=3.7\",\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Intended Audience :: Developers\",\n        \"License :: OSI Approved :: MIT License\",\n        \"Natural Language :: English\",\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 :: Only\",\n        \"Topic :: Internet :: WWW/HTTP :: Dynamic Content\",\n        \"Topic :: Internet :: WWW/HTTP :: WSGI :: Application\",\n    ],\n    test_suite=\"tests\",\n    project_urls={\n        \"Changelog\": \"https://webargs.readthedocs.io/en/latest/changelog.html\",\n        \"Issues\": \"https://github.com/marshmallow-code/webargs/issues\",\n        \"Funding\": \"https://opencollective.com/marshmallow\",\n        \"Tidelift\": \"https://tidelift.com/subscription/pkg/pypi-webargs?utm_source=pypi-marshmallow&utm_medium=pypi\",  # noqa\n    },\n)\n", "path": "setup.py"}]}