prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  ipfshttpclient is unmaintained
  * Version: not-relevant
  * Python: not-relevant
  * OS: not-relevant
  * `pip freeze` output
  
  ```
  not-relevant
  ```
  
  
  ### What was wrong?
  
  According to https://github.com/ipfs-shipyard/py-ipfs-http-client/issues/316 and https://github.com/NixOS/nixpkgs/issues/185294 ; we surmise that `ipfshttpclient` is currently unmaintained or has some breakages unresolved at the moment.
  
  I wanted to understand if you had plans to migrate away to another library or mark the IPFS backend as an extra module or deprecated for now?
  
  ### How can it be fixed?
  
  - Drop the IPFS backend (deprecation)
  - Move it as an extra module (with appropriate documentation)
  - Offer up help to maintain the Python IPFS HTTP client
  - Move to another library (homegrown or whatever.)
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env python
  2 from setuptools import (
  3     find_packages,
  4     setup,
  5 )
  6 
  7 extras_require = {
  8     "tester": [
  9         "eth-tester[py-evm]==v0.7.0-beta.1",
  10         "py-geth>=3.10.0",
  11     ],
  12     "linter": [
  13         "black>=22.1.0",
  14         "flake8==3.8.3",
  15         "isort>=4.2.15,<4.3.5",
  16         "mypy==0.910",
  17         "types-setuptools>=57.4.4",
  18         "types-requests>=2.26.1",
  19         "types-protobuf==3.19.13",
  20     ],
  21     "docs": [
  22         "mock",
  23         "click>=5.1",
  24         "configparser==3.5.0",
  25         "contextlib2>=0.5.4",
  26         "py-geth>=3.9.1",
  27         "py-solc>=0.4.0",
  28         "pytest>=6.2.5",
  29         "sphinx>=4.2.0",
  30         "sphinx_rtd_theme>=0.5.2",
  31         "toposort>=1.4",
  32         "towncrier==18.5.0",
  33         "urllib3",
  34         "wheel",
  35     ],
  36     "dev": [
  37         "bumpversion",
  38         "flaky>=3.7.0",
  39         "hypothesis>=3.31.2",
  40         "importlib-metadata<5.0;python_version<'3.8'",
  41         "pytest>=6.2.5",
  42         "pytest-asyncio>=0.18.1",
  43         "pytest-mock>=1.10",
  44         "pytest-pythonpath>=0.3",
  45         "pytest-watch>=4.2",
  46         "pytest-xdist>=1.29",
  47         "setuptools>=38.6.0",
  48         "tox>=1.8.0",
  49         "tqdm>4.32",
  50         "twine>=1.13",
  51         "pluggy==0.13.1",
  52         "when-changed>=0.3.0",
  53     ],
  54 }
  55 
  56 extras_require["dev"] = (
  57     extras_require["tester"]
  58     + extras_require["linter"]
  59     + extras_require["docs"]
  60     + extras_require["dev"]
  61 )
  62 
  63 with open("./README.md") as readme:
  64     long_description = readme.read()
  65 
  66 setup(
  67     name="web3",
  68     # *IMPORTANT*: Don't manually change the version here. Use the 'bumpversion' utility.
  69     version="6.0.0-beta.8",
  70     description="""Web3.py""",
  71     long_description_content_type="text/markdown",
  72     long_description=long_description,
  73     author="Piper Merriam",
  74     author_email="pipermerriam@gmail.com",
  75     url="https://github.com/ethereum/web3.py",
  76     include_package_data=True,
  77     install_requires=[
  78         "aiohttp>=3.7.4.post0",
  79         "eth-abi>=3.0.0",
  80         "eth-account>=0.7.0",
  81         "eth-hash[pycryptodome]>=0.2.0",
  82         "eth-typing>=3.0.0",
  83         "eth-utils>=2.0.0",
  84         "hexbytes>=0.1.0",
  85         "ipfshttpclient==0.8.0a2",
  86         "jsonschema>=4.0.0",
  87         "lru-dict>=1.1.6",
  88         "protobuf>=4.21.6",
  89         "pywin32>=223;platform_system=='Windows'",
  90         "requests>=2.16.0",
  91         # remove typing_extensions after python_requires>=3.8, see web3._utils.compat
  92         "typing-extensions>=3.7.4.1,<5;python_version<'3.8'",
  93         "websockets>=10.0.0",
  94     ],
  95     python_requires=">=3.7.2",
  96     extras_require=extras_require,
  97     py_modules=["web3", "ens", "ethpm"],
  98     entry_points={"pytest11": ["pytest_ethereum = web3.tools.pytest_ethereum.plugins"]},
  99     license="MIT",
  100     zip_safe=False,
  101     keywords="ethereum",
  102     packages=find_packages(exclude=["tests", "tests.*"]),
  103     package_data={"web3": ["py.typed"]},
  104     classifiers=[
  105         "Development Status :: 5 - Production/Stable",
  106         "Intended Audience :: Developers",
  107         "License :: OSI Approved :: MIT License",
  108         "Natural Language :: English",
  109         "Programming Language :: Python :: 3",
  110         "Programming Language :: Python :: 3.7",
  111         "Programming Language :: Python :: 3.8",
  112         "Programming Language :: Python :: 3.9",
  113         "Programming Language :: Python :: 3.10",
  114     ],
  115 )
  116
  [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
  @@ -51,12 +51,16 @@
           "pluggy==0.13.1",
           "when-changed>=0.3.0",
       ],
  +    "ipfs": [
  +        "ipfshttpclient==0.8.0a2",
  +    ],
   }
   
   extras_require["dev"] = (
       extras_require["tester"]
       + extras_require["linter"]
       + extras_require["docs"]
  +    + extras_require["ipfs"]
       + extras_require["dev"]
   )
   
  @@ -82,7 +86,6 @@
           "eth-typing>=3.0.0",
           "eth-utils>=2.0.0",
           "hexbytes>=0.1.0",
  -        "ipfshttpclient==0.8.0a2",
           "jsonschema>=4.0.0",
           "lru-dict>=1.1.6",
           "protobuf>=4.21.6",
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -51,12 +51,16 @@\n         \"pluggy==0.13.1\",\n         \"when-changed>=0.3.0\",\n     ],\n+    \"ipfs\": [\n+        \"ipfshttpclient==0.8.0a2\",\n+    ],\n }\n \n extras_require[\"dev\"] = (\n     extras_require[\"tester\"]\n     + extras_require[\"linter\"]\n     + extras_require[\"docs\"]\n+    + extras_require[\"ipfs\"]\n     + extras_require[\"dev\"]\n )\n \n@@ -82,7 +86,6 @@\n         \"eth-typing>=3.0.0\",\n         \"eth-utils>=2.0.0\",\n         \"hexbytes>=0.1.0\",\n-        \"ipfshttpclient==0.8.0a2\",\n         \"jsonschema>=4.0.0\",\n         \"lru-dict>=1.1.6\",\n         \"protobuf>=4.21.6\",\n", "issue": "ipfshttpclient is unmaintained\n* Version: not-relevant\r\n* Python: not-relevant\r\n* OS: not-relevant\r\n* `pip freeze` output\r\n\r\n```\r\nnot-relevant\r\n```\r\n\r\n\r\n### What was wrong?\r\n\r\nAccording to https://github.com/ipfs-shipyard/py-ipfs-http-client/issues/316 and https://github.com/NixOS/nixpkgs/issues/185294 ; we surmise that `ipfshttpclient` is currently unmaintained or has some breakages unresolved at the moment.\r\n\r\nI wanted to understand if you had plans to migrate away to another library or mark the IPFS backend as an extra module or deprecated for now?\r\n\r\n### How can it be fixed?\r\n\r\n- Drop the IPFS backend (deprecation)\r\n- Move it as an extra module (with appropriate documentation)\r\n- Offer up help to maintain the Python IPFS HTTP client\r\n- Move to another library (homegrown or whatever.)\n", "before_files": [{"content": "#!/usr/bin/env python\nfrom setuptools import (\n    find_packages,\n    setup,\n)\n\nextras_require = {\n    \"tester\": [\n        \"eth-tester[py-evm]==v0.7.0-beta.1\",\n        \"py-geth>=3.10.0\",\n    ],\n    \"linter\": [\n        \"black>=22.1.0\",\n        \"flake8==3.8.3\",\n        \"isort>=4.2.15,<4.3.5\",\n        \"mypy==0.910\",\n        \"types-setuptools>=57.4.4\",\n        \"types-requests>=2.26.1\",\n        \"types-protobuf==3.19.13\",\n    ],\n    \"docs\": [\n        \"mock\",\n        \"click>=5.1\",\n        \"configparser==3.5.0\",\n        \"contextlib2>=0.5.4\",\n        \"py-geth>=3.9.1\",\n        \"py-solc>=0.4.0\",\n        \"pytest>=6.2.5\",\n        \"sphinx>=4.2.0\",\n        \"sphinx_rtd_theme>=0.5.2\",\n        \"toposort>=1.4\",\n        \"towncrier==18.5.0\",\n        \"urllib3\",\n        \"wheel\",\n    ],\n    \"dev\": [\n        \"bumpversion\",\n        \"flaky>=3.7.0\",\n        \"hypothesis>=3.31.2\",\n        \"importlib-metadata<5.0;python_version<'3.8'\",\n        \"pytest>=6.2.5\",\n        \"pytest-asyncio>=0.18.1\",\n        \"pytest-mock>=1.10\",\n        \"pytest-pythonpath>=0.3\",\n        \"pytest-watch>=4.2\",\n        \"pytest-xdist>=1.29\",\n        \"setuptools>=38.6.0\",\n        \"tox>=1.8.0\",\n        \"tqdm>4.32\",\n        \"twine>=1.13\",\n        \"pluggy==0.13.1\",\n        \"when-changed>=0.3.0\",\n    ],\n}\n\nextras_require[\"dev\"] = (\n    extras_require[\"tester\"]\n    + extras_require[\"linter\"]\n    + extras_require[\"docs\"]\n    + extras_require[\"dev\"]\n)\n\nwith open(\"./README.md\") as readme:\n    long_description = readme.read()\n\nsetup(\n    name=\"web3\",\n    # *IMPORTANT*: Don't manually change the version here. Use the 'bumpversion' utility.\n    version=\"6.0.0-beta.8\",\n    description=\"\"\"Web3.py\"\"\",\n    long_description_content_type=\"text/markdown\",\n    long_description=long_description,\n    author=\"Piper Merriam\",\n    author_email=\"pipermerriam@gmail.com\",\n    url=\"https://github.com/ethereum/web3.py\",\n    include_package_data=True,\n    install_requires=[\n        \"aiohttp>=3.7.4.post0\",\n        \"eth-abi>=3.0.0\",\n        \"eth-account>=0.7.0\",\n        \"eth-hash[pycryptodome]>=0.2.0\",\n        \"eth-typing>=3.0.0\",\n        \"eth-utils>=2.0.0\",\n        \"hexbytes>=0.1.0\",\n        \"ipfshttpclient==0.8.0a2\",\n        \"jsonschema>=4.0.0\",\n        \"lru-dict>=1.1.6\",\n        \"protobuf>=4.21.6\",\n        \"pywin32>=223;platform_system=='Windows'\",\n        \"requests>=2.16.0\",\n        # remove typing_extensions after python_requires>=3.8, see web3._utils.compat\n        \"typing-extensions>=3.7.4.1,<5;python_version<'3.8'\",\n        \"websockets>=10.0.0\",\n    ],\n    python_requires=\">=3.7.2\",\n    extras_require=extras_require,\n    py_modules=[\"web3\", \"ens\", \"ethpm\"],\n    entry_points={\"pytest11\": [\"pytest_ethereum = web3.tools.pytest_ethereum.plugins\"]},\n    license=\"MIT\",\n    zip_safe=False,\n    keywords=\"ethereum\",\n    packages=find_packages(exclude=[\"tests\", \"tests.*\"]),\n    package_data={\"web3\": [\"py.typed\"]},\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    ],\n)\n", "path": "setup.py"}]}