We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Using typing-extensions 4 with web3.py and python < 3.8
Hey guys,

This is question on typing-extensions package. In setup.py https://github.com/ethereum/web3.py/blob/74fbcd1761407ee37808173b089d8e44e537fb99/setup.py#L88-L89

you require <4 and python <3.8. From what I understand that is since these extensions you use have made it into stdlib's typing module from 3.8 and on.

But from what I see this requirement creates a probem for projects like ours which are still in python 3.7, use web3.py and want to use typing-extensions 4. Is there any reason for the < 4 requirement?

--- 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 # -*- coding: utf-8 -*-
3 from setuptools import (
4     find_packages,
5     setup,
6 )
7 
8 extras_require = {
9     'tester': [
10         "eth-tester[py-evm]==v0.6.0-beta.4",
11         "py-geth>=3.6.0,<4",
12     ],
13     'linter': [
14         "flake8==3.8.3",
15         "isort>=4.2.15,<4.3.5",
16         "mypy==0.812",
17     ],
18     'docs': [
19         "mock",
20         "sphinx-better-theme>=0.1.4",
21         "click>=5.1",
22         "configparser==3.5.0",
23         "contextlib2>=0.5.4",
24         "py-geth>=3.6.0,<4",
25         "py-solc>=0.4.0",
26         "pytest>=4.4.0,<5.0.0",
27         "sphinx>=3.0,<4",
28         "sphinx_rtd_theme>=0.1.9",
29         "toposort>=1.4",
30         "towncrier==18.5.0",
31         "urllib3",
32         "wheel"
33     ],
34     'dev': [
35         "bumpversion",
36         "flaky>=3.7.0,<4",
37         "hypothesis>=3.31.2,<6",
38         "pytest>=4.4.0,<5.0.0",
39         "pytest-asyncio>=0.10.0,<0.11",
40         "pytest-mock>=1.10,<2",
41         "pytest-pythonpath>=0.3",
42         "pytest-watch>=4.2,<5",
43         "pytest-xdist>=1.29,<2",
44         "setuptools>=38.6.0",
45         "tox>=1.8.0",
46         "tqdm>4.32,<5",
47         "twine>=1.13,<2",
48         "pluggy==0.13.1",
49         "when-changed>=0.3.0,<0.4"
50     ]
51 }
52 
53 extras_require['dev'] = (
54     extras_require['tester']
55     + extras_require['linter']
56     + extras_require['docs']
57     + extras_require['dev']
58 )
59 
60 with open('./README.md') as readme:
61     long_description = readme.read()
62 
63 setup(
64     name='web3',
65     # *IMPORTANT*: Don't manually change the version here. Use the 'bumpversion' utility.
66     version='5.25.0',
67     description="""Web3.py""",
68     long_description_content_type='text/markdown',
69     long_description=long_description,
70     author='Piper Merriam',
71     author_email='pipermerriam@gmail.com',
72     url='https://github.com/ethereum/web3.py',
73     include_package_data=True,
74     install_requires=[
75         "aiohttp>=3.7.4.post0,<4",
76         "eth-abi>=2.0.0b6,<3.0.0",
77         "eth-account>=0.5.6,<0.6.0",
78         "eth-hash[pycryptodome]>=0.2.0,<1.0.0",
79         "eth-typing>=2.0.0,<3.0.0",
80         "eth-utils>=1.9.5,<2.0.0",
81         "hexbytes>=0.1.0,<1.0.0",
82         "ipfshttpclient==0.8.0a2",
83         "jsonschema>=3.2.0,<4.0.0",
84         "lru-dict>=1.1.6,<2.0.0",
85         "protobuf>=3.10.0,<4",
86         "pywin32>=223;platform_system=='Windows'",
87         "requests>=2.16.0,<3.0.0",
88         # remove typing_extensions after python_requires>=3.8, see web3._utils.compat
89         "typing-extensions>=3.7.4.1,<4;python_version<'3.8'",
90         "websockets>=9.1,<10",
91     ],
92     python_requires='>=3.6,<4',
93     extras_require=extras_require,
94     py_modules=['web3', 'ens', 'ethpm'],
95     entry_points={"pytest11": ["pytest_ethereum = web3.tools.pytest_ethereum.plugins"]},
96     license="MIT",
97     zip_safe=False,
98     keywords='ethereum',
99     packages=find_packages(exclude=["tests", "tests.*"]),
100     package_data={"web3": ["py.typed"]},
101     classifiers=[
102         'Development Status :: 5 - Production/Stable',
103         'Intended Audience :: Developers',
104         'License :: OSI Approved :: MIT License',
105         'Natural Language :: English',
106         'Programming Language :: Python :: 3',
107         'Programming Language :: Python :: 3.6',
108         'Programming Language :: Python :: 3.7',
109         'Programming Language :: Python :: 3.8',
110         'Programming Language :: Python :: 3.9',
111     ],
112 )
113
```
--- 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()

```

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -86,7 +86,7 @@
         "pywin32>=223;platform_system=='Windows'",
         "requests>=2.16.0,<3.0.0",
         # remove typing_extensions after python_requires>=3.8, see web3._utils.compat
-        "typing-extensions>=3.7.4.1,<4;python_version<'3.8'",
+        "typing-extensions>=3.7.4.1,<5;python_version<'3.8'",
         "websockets>=9.1,<10",
     ],
     python_requires='>=3.6,<4',

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -86,7 +86,7 @@\n         \"pywin32>=223;platform_system=='Windows'\",\n         \"requests>=2.16.0,<3.0.0\",\n         # remove typing_extensions after python_requires>=3.8, see web3._utils.compat\n-        \"typing-extensions>=3.7.4.1,<4;python_version<'3.8'\",\n+        \"typing-extensions>=3.7.4.1,<5;python_version<'3.8'\",\n         \"websockets>=9.1,<10\",\n     ],\n     python_requires='>=3.6,<4',\n", "issue": "Using typing-extensions 4 with web3.py and python < 3.8\nHey guys,\r\n\r\nThis is question on typing-extensions package. In setup.py https://github.com/ethereum/web3.py/blob/74fbcd1761407ee37808173b089d8e44e537fb99/setup.py#L88-L89\r\n\r\nyou require <4 and python <3.8. From what I understand that is since these extensions you use have made it into stdlib's typing module from 3.8 and on.\r\n\r\nBut from what I see this requirement creates a probem for projects like ours which are still in python 3.7, use web3.py and want to use typing-extensions 4. Is there any reason for the < 4 requirement?\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nfrom setuptools import (\n    find_packages,\n    setup,\n)\n\nextras_require = {\n    'tester': [\n        \"eth-tester[py-evm]==v0.6.0-beta.4\",\n        \"py-geth>=3.6.0,<4\",\n    ],\n    'linter': [\n        \"flake8==3.8.3\",\n        \"isort>=4.2.15,<4.3.5\",\n        \"mypy==0.812\",\n    ],\n    'docs': [\n        \"mock\",\n        \"sphinx-better-theme>=0.1.4\",\n        \"click>=5.1\",\n        \"configparser==3.5.0\",\n        \"contextlib2>=0.5.4\",\n        \"py-geth>=3.6.0,<4\",\n        \"py-solc>=0.4.0\",\n        \"pytest>=4.4.0,<5.0.0\",\n        \"sphinx>=3.0,<4\",\n        \"sphinx_rtd_theme>=0.1.9\",\n        \"toposort>=1.4\",\n        \"towncrier==18.5.0\",\n        \"urllib3\",\n        \"wheel\"\n    ],\n    'dev': [\n        \"bumpversion\",\n        \"flaky>=3.7.0,<4\",\n        \"hypothesis>=3.31.2,<6\",\n        \"pytest>=4.4.0,<5.0.0\",\n        \"pytest-asyncio>=0.10.0,<0.11\",\n        \"pytest-mock>=1.10,<2\",\n        \"pytest-pythonpath>=0.3\",\n        \"pytest-watch>=4.2,<5\",\n        \"pytest-xdist>=1.29,<2\",\n        \"setuptools>=38.6.0\",\n        \"tox>=1.8.0\",\n        \"tqdm>4.32,<5\",\n        \"twine>=1.13,<2\",\n        \"pluggy==0.13.1\",\n        \"when-changed>=0.3.0,<0.4\"\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='5.25.0',\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,<4\",\n        \"eth-abi>=2.0.0b6,<3.0.0\",\n        \"eth-account>=0.5.6,<0.6.0\",\n        \"eth-hash[pycryptodome]>=0.2.0,<1.0.0\",\n        \"eth-typing>=2.0.0,<3.0.0\",\n        \"eth-utils>=1.9.5,<2.0.0\",\n        \"hexbytes>=0.1.0,<1.0.0\",\n        \"ipfshttpclient==0.8.0a2\",\n        \"jsonschema>=3.2.0,<4.0.0\",\n        \"lru-dict>=1.1.6,<2.0.0\",\n        \"protobuf>=3.10.0,<4\",\n        \"pywin32>=223;platform_system=='Windows'\",\n        \"requests>=2.16.0,<3.0.0\",\n        # remove typing_extensions after python_requires>=3.8, see web3._utils.compat\n        \"typing-extensions>=3.7.4.1,<4;python_version<'3.8'\",\n        \"websockets>=9.1,<10\",\n    ],\n    python_requires='>=3.6,<4',\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.6',\n        'Programming Language :: Python :: 3.7',\n        'Programming Language :: Python :: 3.8',\n        'Programming Language :: Python :: 3.9',\n    ],\n)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nfrom setuptools import (\n    find_packages,\n    setup,\n)\n\nextras_require = {\n    'tester': [\n        \"eth-tester[py-evm]==v0.6.0-beta.4\",\n        \"py-geth>=3.6.0,<4\",\n    ],\n    'linter': [\n        \"flake8==3.8.3\",\n        \"isort>=4.2.15,<4.3.5\",\n        \"mypy==0.812\",\n    ],\n    'docs': [\n        \"mock\",\n        \"sphinx-better-theme>=0.1.4\",\n        \"click>=5.1\",\n        \"configparser==3.5.0\",\n        \"contextlib2>=0.5.4\",\n        \"py-geth>=3.6.0,<4\",\n        \"py-solc>=0.4.0\",\n        \"pytest>=4.4.0,<5.0.0\",\n        \"sphinx>=3.0,<4\",\n        \"sphinx_rtd_theme>=0.1.9\",\n        \"toposort>=1.4\",\n        \"towncrier==18.5.0\",\n        \"urllib3\",\n        \"wheel\"\n    ],\n    'dev': [\n        \"bumpversion\",\n        \"flaky>=3.7.0,<4\",\n        \"hypothesis>=3.31.2,<6\",\n        \"pytest>=4.4.0,<5.0.0\",\n        \"pytest-asyncio>=0.10.0,<0.11\",\n        \"pytest-mock>=1.10,<2\",\n        \"pytest-pythonpath>=0.3\",\n        \"pytest-watch>=4.2,<5\",\n        \"pytest-xdist>=1.29,<2\",\n        \"setuptools>=38.6.0\",\n        \"tox>=1.8.0\",\n        \"tqdm>4.32,<5\",\n        \"twine>=1.13,<2\",\n        \"pluggy==0.13.1\",\n        \"when-changed>=0.3.0,<0.4\"\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='5.25.0',\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,<4\",\n        \"eth-abi>=2.0.0b6,<3.0.0\",\n        \"eth-account>=0.5.6,<0.6.0\",\n        \"eth-hash[pycryptodome]>=0.2.0,<1.0.0\",\n        \"eth-typing>=2.0.0,<3.0.0\",\n        \"eth-utils>=1.9.5,<2.0.0\",\n        \"hexbytes>=0.1.0,<1.0.0\",\n        \"ipfshttpclient==0.8.0a2\",\n        \"jsonschema>=3.2.0,<4.0.0\",\n        \"lru-dict>=1.1.6,<2.0.0\",\n        \"protobuf>=3.10.0,<4\",\n        \"pywin32>=223;platform_system=='Windows'\",\n        \"requests>=2.16.0,<3.0.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>=9.1,<10\",\n    ],\n    python_requires='>=3.6,<4',\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.6',\n        'Programming Language :: Python :: 3.7',\n        'Programming Language :: Python :: 3.8',\n        'Programming Language :: Python :: 3.9',\n    ],\n)\n", "path": "setup.py"}]}