We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
TypeError: 'ABCMeta' aiohttp==3.6.0, Python 3.6.9
## Long story short
Cant import aiohttp

pip freeze gives: aiohttp==3.6.0 
python3 version: Python 3.6.9

 import aiohttp
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/aiohttp/__init__.py", line 6, in <module>
    from .client import BaseConnector as BaseConnector
  File "/usr/local/lib/python3.6/site-packages/aiohttp/client.py", line 63, in <module>
    from .client_reqrep import ClientRequest as ClientRequest
  File "/usr/local/lib/python3.6/site-packages/aiohttp/client_reqrep.py", line 29, in <module>
    from . import hdrs, helpers, http, multipart, payload
  File "/usr/local/lib/python3.6/site-packages/aiohttp/multipart.py", line 703, in <module>
    class MultipartWriter(Payload):
  File "/usr/local/lib/python3.6/site-packages/aiohttp/multipart.py", line 786, in MultipartWriter
    headers: Optional[MultiMapping[str]]=None
TypeError: 'ABCMeta' object is not subscriptable


Any known restriction, what I am missing? 



--- 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 import codecs
2 import os
3 import pathlib
4 import re
5 import sys
6 from distutils.command.build_ext import build_ext
7 from distutils.errors import (CCompilerError, DistutilsExecError,
8                               DistutilsPlatformError)
9 
10 from setuptools import Extension, setup
11 
12 
13 if sys.version_info < (3, 5, 3):
14     raise RuntimeError("aiohttp 3.x requires Python 3.5.3+")
15 
16 
17 NO_EXTENSIONS = bool(os.environ.get('AIOHTTP_NO_EXTENSIONS'))  # type: bool
18 
19 if sys.implementation.name != "cpython":
20     NO_EXTENSIONS = True
21 
22 
23 here = pathlib.Path(__file__).parent
24 
25 if (here / '.git').exists() and not (here / 'vendor/http-parser/README.md').exists():
26     print("Install submodules when building from git clone", file=sys.stderr)
27     print("Hint:", file=sys.stderr)
28     print("  git submodule update --init", file=sys.stderr)
29     sys.exit(2)
30 
31 
32 # NOTE: makefile cythonizes all Cython modules
33 
34 extensions = [Extension('aiohttp._websocket', ['aiohttp/_websocket.c']),
35               Extension('aiohttp._http_parser',
36                         ['aiohttp/_http_parser.c',
37                          'vendor/http-parser/http_parser.c',
38                          'aiohttp/_find_header.c'],
39                         define_macros=[('HTTP_PARSER_STRICT', 0)],
40                         ),
41               Extension('aiohttp._frozenlist',
42                         ['aiohttp/_frozenlist.c']),
43               Extension('aiohttp._helpers',
44                         ['aiohttp/_helpers.c']),
45               Extension('aiohttp._http_writer',
46                         ['aiohttp/_http_writer.c'])]
47 
48 
49 class BuildFailed(Exception):
50     pass
51 
52 
53 class ve_build_ext(build_ext):
54     # This class allows C extension building to fail.
55 
56     def run(self):
57         try:
58             build_ext.run(self)
59         except (DistutilsPlatformError, FileNotFoundError):
60             raise BuildFailed()
61 
62     def build_extension(self, ext):
63         try:
64             build_ext.build_extension(self, ext)
65         except (CCompilerError, DistutilsExecError,
66                 DistutilsPlatformError, ValueError):
67             raise BuildFailed()
68 
69 
70 
71 txt = (here / 'aiohttp' / '__init__.py').read_text('utf-8')
72 try:
73     version = re.findall(r"^__version__ = '([^']+)'\r?$",
74                          txt, re.M)[0]
75 except IndexError:
76     raise RuntimeError('Unable to determine version.')
77 
78 install_requires = [
79     'attrs>=17.3.0',
80     'chardet>=2.0,<4.0',
81     'multidict>=4.0,<5.0',
82     'async_timeout>=3.0,<4.0',
83     'yarl>=1.0,<2.0',
84     'idna-ssl>=1.0; python_version<"3.7"',
85     'typing_extensions>=3.6.5',
86 ]
87 
88 
89 def read(f):
90     return (here / f).read_text('utf-8').strip()
91 
92 
93 args = dict(
94     name='aiohttp',
95     version=version,
96     description='Async http client/server framework (asyncio)',
97     long_description='\n\n'.join((read('README.rst'), read('CHANGES.rst'))),
98     long_description_content_type="text/x-rst",
99     classifiers=[
100         'License :: OSI Approved :: Apache Software License',
101         'Intended Audience :: Developers',
102         'Programming Language :: Python',
103         'Programming Language :: Python :: 3',
104         'Programming Language :: Python :: 3.5',
105         'Programming Language :: Python :: 3.6',
106         'Programming Language :: Python :: 3.7',
107         'Development Status :: 5 - Production/Stable',
108         'Operating System :: POSIX',
109         'Operating System :: MacOS :: MacOS X',
110         'Operating System :: Microsoft :: Windows',
111         'Topic :: Internet :: WWW/HTTP',
112         'Framework :: AsyncIO',
113     ],
114     author='Nikolay Kim',
115     author_email='fafhrd91@gmail.com',
116     maintainer=', '.join(('Nikolay Kim <fafhrd91@gmail.com>',
117                           'Andrew Svetlov <andrew.svetlov@gmail.com>')),
118     maintainer_email='aio-libs@googlegroups.com',
119     url='https://github.com/aio-libs/aiohttp',
120     project_urls={
121         'Chat: Gitter': 'https://gitter.im/aio-libs/Lobby',
122         'CI: AppVeyor': 'https://ci.appveyor.com/project/aio-libs/aiohttp',
123         'CI: Circle': 'https://circleci.com/gh/aio-libs/aiohttp',
124         'CI: Shippable': 'https://app.shippable.com/github/aio-libs/aiohttp',
125         'CI: Travis': 'https://travis-ci.com/aio-libs/aiohttp',
126         'Coverage: codecov': 'https://codecov.io/github/aio-libs/aiohttp',
127         'Docs: RTD': 'https://docs.aiohttp.org',
128         'GitHub: issues': 'https://github.com/aio-libs/aiohttp/issues',
129         'GitHub: repo': 'https://github.com/aio-libs/aiohttp',
130     },
131     license='Apache 2',
132     packages=['aiohttp'],
133     python_requires='>=3.5.3',
134     install_requires=install_requires,
135     extras_require={
136         'speedups': [
137             'aiodns',
138             'Brotli',
139             'cchardet',
140         ],
141     },
142     include_package_data=True,
143 )
144 
145 if not NO_EXTENSIONS:
146     print("**********************")
147     print("* Accellerated build *")
148     print("**********************")
149     setup(ext_modules=extensions,
150           cmdclass=dict(build_ext=ve_build_ext),
151           **args)
152 else:
153     print("*********************")
154     print("* Pure Python build *")
155     print("*********************")
156     setup(**args)
157
```
--- 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
@@ -78,7 +78,7 @@
 install_requires = [
     'attrs>=17.3.0',
     'chardet>=2.0,<4.0',
-    'multidict>=4.0,<5.0',
+    'multidict>=4.5,<5.0',
     'async_timeout>=3.0,<4.0',
     'yarl>=1.0,<2.0',
     'idna-ssl>=1.0; python_version<"3.7"',

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -78,7 +78,7 @@\n install_requires = [\n     'attrs>=17.3.0',\n     'chardet>=2.0,<4.0',\n-    'multidict>=4.0,<5.0',\n+    'multidict>=4.5,<5.0',\n     'async_timeout>=3.0,<4.0',\n     'yarl>=1.0,<2.0',\n     'idna-ssl>=1.0; python_version<\"3.7\"',\n", "issue": "TypeError: 'ABCMeta' aiohttp==3.6.0, Python 3.6.9\n## Long story short\r\nCant import aiohttp\r\n\r\npip freeze gives: aiohttp==3.6.0 \r\npython3 version: Python 3.6.9\r\n\r\n import aiohttp\r\nTraceback (most recent call last):\r\n  File \"<stdin>\", line 1, in <module>\r\n  File \"/usr/local/lib/python3.6/site-packages/aiohttp/__init__.py\", line 6, in <module>\r\n    from .client import BaseConnector as BaseConnector\r\n  File \"/usr/local/lib/python3.6/site-packages/aiohttp/client.py\", line 63, in <module>\r\n    from .client_reqrep import ClientRequest as ClientRequest\r\n  File \"/usr/local/lib/python3.6/site-packages/aiohttp/client_reqrep.py\", line 29, in <module>\r\n    from . import hdrs, helpers, http, multipart, payload\r\n  File \"/usr/local/lib/python3.6/site-packages/aiohttp/multipart.py\", line 703, in <module>\r\n    class MultipartWriter(Payload):\r\n  File \"/usr/local/lib/python3.6/site-packages/aiohttp/multipart.py\", line 786, in MultipartWriter\r\n    headers: Optional[MultiMapping[str]]=None\r\nTypeError: 'ABCMeta' object is not subscriptable\r\n\r\n\r\nAny known restriction, what I am missing? \r\n\r\n\n", "before_files": [{"content": "import codecs\nimport os\nimport pathlib\nimport re\nimport sys\nfrom distutils.command.build_ext import build_ext\nfrom distutils.errors import (CCompilerError, DistutilsExecError,\n                              DistutilsPlatformError)\n\nfrom setuptools import Extension, setup\n\n\nif sys.version_info < (3, 5, 3):\n    raise RuntimeError(\"aiohttp 3.x requires Python 3.5.3+\")\n\n\nNO_EXTENSIONS = bool(os.environ.get('AIOHTTP_NO_EXTENSIONS'))  # type: bool\n\nif sys.implementation.name != \"cpython\":\n    NO_EXTENSIONS = True\n\n\nhere = pathlib.Path(__file__).parent\n\nif (here / '.git').exists() and not (here / 'vendor/http-parser/README.md').exists():\n    print(\"Install submodules when building from git clone\", file=sys.stderr)\n    print(\"Hint:\", file=sys.stderr)\n    print(\"  git submodule update --init\", file=sys.stderr)\n    sys.exit(2)\n\n\n# NOTE: makefile cythonizes all Cython modules\n\nextensions = [Extension('aiohttp._websocket', ['aiohttp/_websocket.c']),\n              Extension('aiohttp._http_parser',\n                        ['aiohttp/_http_parser.c',\n                         'vendor/http-parser/http_parser.c',\n                         'aiohttp/_find_header.c'],\n                        define_macros=[('HTTP_PARSER_STRICT', 0)],\n                        ),\n              Extension('aiohttp._frozenlist',\n                        ['aiohttp/_frozenlist.c']),\n              Extension('aiohttp._helpers',\n                        ['aiohttp/_helpers.c']),\n              Extension('aiohttp._http_writer',\n                        ['aiohttp/_http_writer.c'])]\n\n\nclass BuildFailed(Exception):\n    pass\n\n\nclass ve_build_ext(build_ext):\n    # This class allows C extension building to fail.\n\n    def run(self):\n        try:\n            build_ext.run(self)\n        except (DistutilsPlatformError, FileNotFoundError):\n            raise BuildFailed()\n\n    def build_extension(self, ext):\n        try:\n            build_ext.build_extension(self, ext)\n        except (CCompilerError, DistutilsExecError,\n                DistutilsPlatformError, ValueError):\n            raise BuildFailed()\n\n\n\ntxt = (here / 'aiohttp' / '__init__.py').read_text('utf-8')\ntry:\n    version = re.findall(r\"^__version__ = '([^']+)'\\r?$\",\n                         txt, re.M)[0]\nexcept IndexError:\n    raise RuntimeError('Unable to determine version.')\n\ninstall_requires = [\n    'attrs>=17.3.0',\n    'chardet>=2.0,<4.0',\n    'multidict>=4.0,<5.0',\n    'async_timeout>=3.0,<4.0',\n    'yarl>=1.0,<2.0',\n    'idna-ssl>=1.0; python_version<\"3.7\"',\n    'typing_extensions>=3.6.5',\n]\n\n\ndef read(f):\n    return (here / f).read_text('utf-8').strip()\n\n\nargs = dict(\n    name='aiohttp',\n    version=version,\n    description='Async http client/server framework (asyncio)',\n    long_description='\\n\\n'.join((read('README.rst'), read('CHANGES.rst'))),\n    long_description_content_type=\"text/x-rst\",\n    classifiers=[\n        'License :: OSI Approved :: Apache Software License',\n        'Intended Audience :: Developers',\n        'Programming Language :: Python',\n        'Programming Language :: Python :: 3',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n        'Programming Language :: Python :: 3.7',\n        'Development Status :: 5 - Production/Stable',\n        'Operating System :: POSIX',\n        'Operating System :: MacOS :: MacOS X',\n        'Operating System :: Microsoft :: Windows',\n        'Topic :: Internet :: WWW/HTTP',\n        'Framework :: AsyncIO',\n    ],\n    author='Nikolay Kim',\n    author_email='fafhrd91@gmail.com',\n    maintainer=', '.join(('Nikolay Kim <fafhrd91@gmail.com>',\n                          'Andrew Svetlov <andrew.svetlov@gmail.com>')),\n    maintainer_email='aio-libs@googlegroups.com',\n    url='https://github.com/aio-libs/aiohttp',\n    project_urls={\n        'Chat: Gitter': 'https://gitter.im/aio-libs/Lobby',\n        'CI: AppVeyor': 'https://ci.appveyor.com/project/aio-libs/aiohttp',\n        'CI: Circle': 'https://circleci.com/gh/aio-libs/aiohttp',\n        'CI: Shippable': 'https://app.shippable.com/github/aio-libs/aiohttp',\n        'CI: Travis': 'https://travis-ci.com/aio-libs/aiohttp',\n        'Coverage: codecov': 'https://codecov.io/github/aio-libs/aiohttp',\n        'Docs: RTD': 'https://docs.aiohttp.org',\n        'GitHub: issues': 'https://github.com/aio-libs/aiohttp/issues',\n        'GitHub: repo': 'https://github.com/aio-libs/aiohttp',\n    },\n    license='Apache 2',\n    packages=['aiohttp'],\n    python_requires='>=3.5.3',\n    install_requires=install_requires,\n    extras_require={\n        'speedups': [\n            'aiodns',\n            'Brotli',\n            'cchardet',\n        ],\n    },\n    include_package_data=True,\n)\n\nif not NO_EXTENSIONS:\n    print(\"**********************\")\n    print(\"* Accellerated build *\")\n    print(\"**********************\")\n    setup(ext_modules=extensions,\n          cmdclass=dict(build_ext=ve_build_ext),\n          **args)\nelse:\n    print(\"*********************\")\n    print(\"* Pure Python build *\")\n    print(\"*********************\")\n    setup(**args)\n", "path": "setup.py"}], "after_files": [{"content": "import codecs\nimport os\nimport pathlib\nimport re\nimport sys\nfrom distutils.command.build_ext import build_ext\nfrom distutils.errors import (CCompilerError, DistutilsExecError,\n                              DistutilsPlatformError)\n\nfrom setuptools import Extension, setup\n\n\nif sys.version_info < (3, 5, 3):\n    raise RuntimeError(\"aiohttp 3.x requires Python 3.5.3+\")\n\n\nNO_EXTENSIONS = bool(os.environ.get('AIOHTTP_NO_EXTENSIONS'))  # type: bool\n\nif sys.implementation.name != \"cpython\":\n    NO_EXTENSIONS = True\n\n\nhere = pathlib.Path(__file__).parent\n\nif (here / '.git').exists() and not (here / 'vendor/http-parser/README.md').exists():\n    print(\"Install submodules when building from git clone\", file=sys.stderr)\n    print(\"Hint:\", file=sys.stderr)\n    print(\"  git submodule update --init\", file=sys.stderr)\n    sys.exit(2)\n\n\n# NOTE: makefile cythonizes all Cython modules\n\nextensions = [Extension('aiohttp._websocket', ['aiohttp/_websocket.c']),\n              Extension('aiohttp._http_parser',\n                        ['aiohttp/_http_parser.c',\n                         'vendor/http-parser/http_parser.c',\n                         'aiohttp/_find_header.c'],\n                        define_macros=[('HTTP_PARSER_STRICT', 0)],\n                        ),\n              Extension('aiohttp._frozenlist',\n                        ['aiohttp/_frozenlist.c']),\n              Extension('aiohttp._helpers',\n                        ['aiohttp/_helpers.c']),\n              Extension('aiohttp._http_writer',\n                        ['aiohttp/_http_writer.c'])]\n\n\nclass BuildFailed(Exception):\n    pass\n\n\nclass ve_build_ext(build_ext):\n    # This class allows C extension building to fail.\n\n    def run(self):\n        try:\n            build_ext.run(self)\n        except (DistutilsPlatformError, FileNotFoundError):\n            raise BuildFailed()\n\n    def build_extension(self, ext):\n        try:\n            build_ext.build_extension(self, ext)\n        except (CCompilerError, DistutilsExecError,\n                DistutilsPlatformError, ValueError):\n            raise BuildFailed()\n\n\n\ntxt = (here / 'aiohttp' / '__init__.py').read_text('utf-8')\ntry:\n    version = re.findall(r\"^__version__ = '([^']+)'\\r?$\",\n                         txt, re.M)[0]\nexcept IndexError:\n    raise RuntimeError('Unable to determine version.')\n\ninstall_requires = [\n    'attrs>=17.3.0',\n    'chardet>=2.0,<4.0',\n    'multidict>=4.5,<5.0',\n    'async_timeout>=3.0,<4.0',\n    'yarl>=1.0,<2.0',\n    'idna-ssl>=1.0; python_version<\"3.7\"',\n    'typing_extensions>=3.6.5',\n]\n\n\ndef read(f):\n    return (here / f).read_text('utf-8').strip()\n\n\nargs = dict(\n    name='aiohttp',\n    version=version,\n    description='Async http client/server framework (asyncio)',\n    long_description='\\n\\n'.join((read('README.rst'), read('CHANGES.rst'))),\n    long_description_content_type=\"text/x-rst\",\n    classifiers=[\n        'License :: OSI Approved :: Apache Software License',\n        'Intended Audience :: Developers',\n        'Programming Language :: Python',\n        'Programming Language :: Python :: 3',\n        'Programming Language :: Python :: 3.5',\n        'Programming Language :: Python :: 3.6',\n        'Programming Language :: Python :: 3.7',\n        'Development Status :: 5 - Production/Stable',\n        'Operating System :: POSIX',\n        'Operating System :: MacOS :: MacOS X',\n        'Operating System :: Microsoft :: Windows',\n        'Topic :: Internet :: WWW/HTTP',\n        'Framework :: AsyncIO',\n    ],\n    author='Nikolay Kim',\n    author_email='fafhrd91@gmail.com',\n    maintainer=', '.join(('Nikolay Kim <fafhrd91@gmail.com>',\n                          'Andrew Svetlov <andrew.svetlov@gmail.com>')),\n    maintainer_email='aio-libs@googlegroups.com',\n    url='https://github.com/aio-libs/aiohttp',\n    project_urls={\n        'Chat: Gitter': 'https://gitter.im/aio-libs/Lobby',\n        'CI: AppVeyor': 'https://ci.appveyor.com/project/aio-libs/aiohttp',\n        'CI: Circle': 'https://circleci.com/gh/aio-libs/aiohttp',\n        'CI: Shippable': 'https://app.shippable.com/github/aio-libs/aiohttp',\n        'CI: Travis': 'https://travis-ci.com/aio-libs/aiohttp',\n        'Coverage: codecov': 'https://codecov.io/github/aio-libs/aiohttp',\n        'Docs: RTD': 'https://docs.aiohttp.org',\n        'GitHub: issues': 'https://github.com/aio-libs/aiohttp/issues',\n        'GitHub: repo': 'https://github.com/aio-libs/aiohttp',\n    },\n    license='Apache 2',\n    packages=['aiohttp'],\n    python_requires='>=3.5.3',\n    install_requires=install_requires,\n    extras_require={\n        'speedups': [\n            'aiodns',\n            'Brotli',\n            'cchardet',\n        ],\n    },\n    include_package_data=True,\n)\n\nif not NO_EXTENSIONS:\n    print(\"**********************\")\n    print(\"* Accellerated build *\")\n    print(\"**********************\")\n    setup(ext_modules=extensions,\n          cmdclass=dict(build_ext=ve_build_ext),\n          **args)\nelse:\n    print(\"*********************\")\n    print(\"* Pure Python build *\")\n    print(\"*********************\")\n    setup(**args)\n", "path": "setup.py"}]}