prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Remove lru-dict dependency
  lru-dict requires a wheel that is not pre-compiled for Python 3.11.
  
  It is only used in 1 place where it should be able to be replaced with the built-in functools lru cache: https://github.com/ethereum/web3.py/blob/master/web3/middleware/cache.py#L196
  
  Removing this dependency would avoid future compatibility problems as well.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `setup.py`
  Content:
  ```
  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.9.1-b.1",
  10         "py-geth>=3.11.0",
  11     ],
  12     "linter": [
  13         "black>=22.1.0",
  14         "flake8==3.8.3",
  15         "isort>=5.11.0",
  16         "mypy==1.4.1",
  17         "types-setuptools>=57.4.4",
  18         "types-requests>=2.26.1",
  19         "types-protobuf==3.19.13",
  20     ],
  21     "docs": [
  22         "sphinx>=5.3.0",
  23         "sphinx_rtd_theme>=1.0.0",
  24         "towncrier>=21,<22",
  25     ],
  26     "dev": [
  27         "bumpversion",
  28         "flaky>=3.7.0",
  29         "hypothesis>=3.31.2",
  30         "importlib-metadata<5.0;python_version<'3.8'",
  31         "pytest>=7.0.0",
  32         "pytest-asyncio>=0.18.1,<0.23",
  33         "pytest-mock>=1.10",
  34         "pytest-watch>=4.2",
  35         "pytest-xdist>=1.29",
  36         "setuptools>=38.6.0",
  37         "tox>=3.18.0",
  38         "tqdm>4.32",
  39         "twine>=1.13",
  40         "when-changed>=0.3.0",
  41         "build>=0.9.0",
  42     ],
  43     "ipfs": [
  44         "ipfshttpclient==0.8.0a2",
  45     ],
  46 }
  47 
  48 extras_require["dev"] = (
  49     extras_require["tester"]
  50     + extras_require["linter"]
  51     + extras_require["docs"]
  52     + extras_require["ipfs"]
  53     + extras_require["dev"]
  54 )
  55 
  56 with open("./README.md") as readme:
  57     long_description = readme.read()
  58 
  59 setup(
  60     name="web3",
  61     # *IMPORTANT*: Don't manually change the version here. Use the 'bumpversion' utility.
  62     version="6.14.0",
  63     description="""web3.py""",
  64     long_description_content_type="text/markdown",
  65     long_description=long_description,
  66     author="The Ethereum Foundation",
  67     author_email="snakecharmers@ethereum.org",
  68     url="https://github.com/ethereum/web3.py",
  69     include_package_data=True,
  70     install_requires=[
  71         "aiohttp>=3.7.4.post0",
  72         "eth-abi>=4.0.0",
  73         "eth-account>=0.8.0",
  74         "eth-hash[pycryptodome]>=0.5.1",
  75         "eth-typing>=3.0.0",
  76         "eth-utils>=2.1.0",
  77         "hexbytes>=0.1.0,<0.4.0",
  78         "jsonschema>=4.0.0",
  79         "lru-dict>=1.1.6,<1.3.0",
  80         "protobuf>=4.21.6",
  81         "pydantic>=2.4.0",
  82         "pywin32>=223;platform_system=='Windows'",
  83         "requests>=2.16.0",
  84         "typing-extensions>=4.0.1",
  85         "websockets>=10.0.0",
  86         "pyunormalize>=15.0.0",
  87     ],
  88     python_requires=">=3.7.2",
  89     extras_require=extras_require,
  90     py_modules=["web3", "ens", "ethpm"],
  91     entry_points={"pytest11": ["pytest_ethereum = web3.tools.pytest_ethereum.plugins"]},
  92     license="MIT",
  93     zip_safe=False,
  94     keywords="ethereum",
  95     packages=find_packages(exclude=["tests", "tests.*"]),
  96     package_data={"web3": ["py.typed"]},
  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.11",
  108     ],
  109 )
  110
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -76,7 +76,6 @@
           "eth-utils>=2.1.0",
           "hexbytes>=0.1.0,<0.4.0",
           "jsonschema>=4.0.0",
  -        "lru-dict>=1.1.6,<1.3.0",
           "protobuf>=4.21.6",
           "pydantic>=2.4.0",
           "pywin32>=223;platform_system=='Windows'",
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -76,7 +76,6 @@\n         \"eth-utils>=2.1.0\",\n         \"hexbytes>=0.1.0,<0.4.0\",\n         \"jsonschema>=4.0.0\",\n-        \"lru-dict>=1.1.6,<1.3.0\",\n         \"protobuf>=4.21.6\",\n         \"pydantic>=2.4.0\",\n         \"pywin32>=223;platform_system=='Windows'\",\n", "issue": "Remove lru-dict dependency\nlru-dict requires a wheel that is not pre-compiled for Python 3.11.\r\n\r\nIt is only used in 1 place where it should be able to be replaced with the built-in functools lru cache: https://github.com/ethereum/web3.py/blob/master/web3/middleware/cache.py#L196\r\n\r\nRemoving this dependency would avoid future compatibility problems as well.\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.9.1-b.1\",\n        \"py-geth>=3.11.0\",\n    ],\n    \"linter\": [\n        \"black>=22.1.0\",\n        \"flake8==3.8.3\",\n        \"isort>=5.11.0\",\n        \"mypy==1.4.1\",\n        \"types-setuptools>=57.4.4\",\n        \"types-requests>=2.26.1\",\n        \"types-protobuf==3.19.13\",\n    ],\n    \"docs\": [\n        \"sphinx>=5.3.0\",\n        \"sphinx_rtd_theme>=1.0.0\",\n        \"towncrier>=21,<22\",\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>=7.0.0\",\n        \"pytest-asyncio>=0.18.1,<0.23\",\n        \"pytest-mock>=1.10\",\n        \"pytest-watch>=4.2\",\n        \"pytest-xdist>=1.29\",\n        \"setuptools>=38.6.0\",\n        \"tox>=3.18.0\",\n        \"tqdm>4.32\",\n        \"twine>=1.13\",\n        \"when-changed>=0.3.0\",\n        \"build>=0.9.0\",\n    ],\n    \"ipfs\": [\n        \"ipfshttpclient==0.8.0a2\",\n    ],\n}\n\nextras_require[\"dev\"] = (\n    extras_require[\"tester\"]\n    + extras_require[\"linter\"]\n    + extras_require[\"docs\"]\n    + extras_require[\"ipfs\"]\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.14.0\",\n    description=\"\"\"web3.py\"\"\",\n    long_description_content_type=\"text/markdown\",\n    long_description=long_description,\n    author=\"The Ethereum Foundation\",\n    author_email=\"snakecharmers@ethereum.org\",\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>=4.0.0\",\n        \"eth-account>=0.8.0\",\n        \"eth-hash[pycryptodome]>=0.5.1\",\n        \"eth-typing>=3.0.0\",\n        \"eth-utils>=2.1.0\",\n        \"hexbytes>=0.1.0,<0.4.0\",\n        \"jsonschema>=4.0.0\",\n        \"lru-dict>=1.1.6,<1.3.0\",\n        \"protobuf>=4.21.6\",\n        \"pydantic>=2.4.0\",\n        \"pywin32>=223;platform_system=='Windows'\",\n        \"requests>=2.16.0\",\n        \"typing-extensions>=4.0.1\",\n        \"websockets>=10.0.0\",\n        \"pyunormalize>=15.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        \"Programming Language :: Python :: 3.11\",\n    ],\n)\n", "path": "setup.py"}], "after_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.9.1-b.1\",\n        \"py-geth>=3.11.0\",\n    ],\n    \"linter\": [\n        \"black>=22.1.0\",\n        \"flake8==3.8.3\",\n        \"isort>=5.11.0\",\n        \"mypy==1.4.1\",\n        \"types-setuptools>=57.4.4\",\n        \"types-requests>=2.26.1\",\n        \"types-protobuf==3.19.13\",\n    ],\n    \"docs\": [\n        \"sphinx>=5.3.0\",\n        \"sphinx_rtd_theme>=1.0.0\",\n        \"towncrier>=21,<22\",\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>=7.0.0\",\n        \"pytest-asyncio>=0.18.1,<0.23\",\n        \"pytest-mock>=1.10\",\n        \"pytest-watch>=4.2\",\n        \"pytest-xdist>=1.29\",\n        \"setuptools>=38.6.0\",\n        \"tox>=3.18.0\",\n        \"tqdm>4.32\",\n        \"twine>=1.13\",\n        \"when-changed>=0.3.0\",\n        \"build>=0.9.0\",\n    ],\n    \"ipfs\": [\n        \"ipfshttpclient==0.8.0a2\",\n    ],\n}\n\nextras_require[\"dev\"] = (\n    extras_require[\"tester\"]\n    + extras_require[\"linter\"]\n    + extras_require[\"docs\"]\n    + extras_require[\"ipfs\"]\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.14.0\",\n    description=\"\"\"web3.py\"\"\",\n    long_description_content_type=\"text/markdown\",\n    long_description=long_description,\n    author=\"The Ethereum Foundation\",\n    author_email=\"snakecharmers@ethereum.org\",\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>=4.0.0\",\n        \"eth-account>=0.8.0\",\n        \"eth-hash[pycryptodome]>=0.5.1\",\n        \"eth-typing>=3.0.0\",\n        \"eth-utils>=2.1.0\",\n        \"hexbytes>=0.1.0,<0.4.0\",\n        \"jsonschema>=4.0.0\",\n        \"protobuf>=4.21.6\",\n        \"pydantic>=2.4.0\",\n        \"pywin32>=223;platform_system=='Windows'\",\n        \"requests>=2.16.0\",\n        \"typing-extensions>=4.0.1\",\n        \"websockets>=10.0.0\",\n        \"pyunormalize>=15.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        \"Programming Language :: Python :: 3.11\",\n    ],\n)\n", "path": "setup.py"}]}