prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Drop Python 3.5
  Due to lack of support for [variable type annotations](https://www.python.org/dev/peps/pep-0526/) I suggest to drop support for Python 3.5. This is already a problem in #30 in which either code or mypy is failing and only solution is to remove hints.
  
  We might consider testing ariadne on 3.7 for future-proofing our project.
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `ariadne/executable_schema.py`
  Content:
  ```
  1 from collections import defaultdict
  2 from itertools import chain
  3 from typing import Iterator, List, Union
  4 
  5 from graphql import GraphQLSchema
  6 
  7 from .build_schema import build_schema_from_type_definitions
  8 from .resolvers import add_resolve_functions_to_schema
  9 
  10 
  11 def decompose_maps(resolvers_maps: List[dict]) -> Iterator[tuple]:
  12     def flatten(rm):
  13         for key, value in rm.items():
  14             for resolver_name, resolver in value.items():
  15                 yield (key, resolver_name, resolver)
  16 
  17     return chain.from_iterable(flatten(m) for m in resolvers_maps)
  18 
  19 
  20 def merge_resolvers(resolver_list: Iterator[tuple]) -> dict:
  21     output = defaultdict(dict)  # type: dict
  22     for key, resolver_name, resolver in resolver_list:
  23         output[key][resolver_name] = resolver
  24     return output
  25 
  26 
  27 def join_type_defs(type_defs: List[str]) -> str:
  28     return "\n\n".join(t.strip() for t in type_defs)
  29 
  30 
  31 def make_executable_schema(
  32     type_defs: Union[str, List[str]], resolvers: Union[dict, List[dict]]
  33 ) -> GraphQLSchema:
  34     if isinstance(type_defs, list):
  35         type_defs = join_type_defs(type_defs)
  36 
  37     schema = build_schema_from_type_definitions(type_defs)
  38 
  39     if isinstance(resolvers, list):
  40         add_resolve_functions_to_schema(
  41             schema, merge_resolvers(decompose_maps(resolvers))
  42         )
  43     elif isinstance(resolvers, dict):
  44         add_resolve_functions_to_schema(schema, resolvers)
  45 
  46     return schema
  47
  ```
  
  Path: `setup.py`
  Content:
  ```
  1 #! /usr/bin/env python
  2 import os
  3 from setuptools import setup
  4 
  5 CLASSIFIERS = [
  6     "Intended Audience :: Developers",
  7     "License :: OSI Approved :: BSD License",
  8     "Operating System :: OS Independent",
  9     "Programming Language :: Python",
  10     "Programming Language :: Python :: 3.5",
  11     "Programming Language :: Python :: 3.6",
  12     "Programming Language :: Python :: 3.7",
  13     "Topic :: Software Development :: Libraries :: Python Modules",
  14 ]
  15 
  16 README_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "README.md")
  17 with open(README_PATH, "r") as f:
  18     README = f.read()
  19 
  20 setup(
  21     name="ariadne",
  22     author="Mirumee Software",
  23     author_email="hello@mirumee.com",
  24     description="Ariadne is a Python library for implementing GraphQL servers.",
  25     long_description=README,
  26     long_description_content_type="text/markdown",
  27     license="BSD",
  28     version="0.1.0",
  29     url="https://github.com/mirumee/ariadne",
  30     packages=["ariadne"],
  31     install_requires=["graphql-core>=2.1", "typing>=3.6.0"],
  32     classifiers=CLASSIFIERS,
  33     platforms=["any"],
  34 )
  35
  ```
  --- 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/ariadne/executable_schema.py b/ariadne/executable_schema.py
  --- a/ariadne/executable_schema.py
  +++ b/ariadne/executable_schema.py
  @@ -18,7 +18,7 @@
   
   
   def merge_resolvers(resolver_list: Iterator[tuple]) -> dict:
  -    output = defaultdict(dict)  # type: dict
  +    output: dict = defaultdict(dict)
       for key, resolver_name, resolver in resolver_list:
           output[key][resolver_name] = resolver
       return output
  diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -7,7 +7,6 @@
       "License :: OSI Approved :: BSD License",
       "Operating System :: OS Independent",
       "Programming Language :: Python",
  -    "Programming Language :: Python :: 3.5",
       "Programming Language :: Python :: 3.6",
       "Programming Language :: Python :: 3.7",
       "Topic :: Software Development :: Libraries :: Python Modules",
  
verification_info: {"golden_diff": "diff --git a/ariadne/executable_schema.py b/ariadne/executable_schema.py\n--- a/ariadne/executable_schema.py\n+++ b/ariadne/executable_schema.py\n@@ -18,7 +18,7 @@\n \n \n def merge_resolvers(resolver_list: Iterator[tuple]) -> dict:\n-    output = defaultdict(dict)  # type: dict\n+    output: dict = defaultdict(dict)\n     for key, resolver_name, resolver in resolver_list:\n         output[key][resolver_name] = resolver\n     return output\ndiff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -7,7 +7,6 @@\n     \"License :: OSI Approved :: BSD License\",\n     \"Operating System :: OS Independent\",\n     \"Programming Language :: Python\",\n-    \"Programming Language :: Python :: 3.5\",\n     \"Programming Language :: Python :: 3.6\",\n     \"Programming Language :: Python :: 3.7\",\n     \"Topic :: Software Development :: Libraries :: Python Modules\",\n", "issue": "Drop Python 3.5\nDue to lack of support for [variable type annotations](https://www.python.org/dev/peps/pep-0526/) I suggest to drop support for Python 3.5. This is already a problem in #30 in which either code or mypy is failing and only solution is to remove hints.\r\n\r\nWe might consider testing ariadne on 3.7 for future-proofing our project.\n", "before_files": [{"content": "from collections import defaultdict\nfrom itertools import chain\nfrom typing import Iterator, List, Union\n\nfrom graphql import GraphQLSchema\n\nfrom .build_schema import build_schema_from_type_definitions\nfrom .resolvers import add_resolve_functions_to_schema\n\n\ndef decompose_maps(resolvers_maps: List[dict]) -> Iterator[tuple]:\n    def flatten(rm):\n        for key, value in rm.items():\n            for resolver_name, resolver in value.items():\n                yield (key, resolver_name, resolver)\n\n    return chain.from_iterable(flatten(m) for m in resolvers_maps)\n\n\ndef merge_resolvers(resolver_list: Iterator[tuple]) -> dict:\n    output = defaultdict(dict)  # type: dict\n    for key, resolver_name, resolver in resolver_list:\n        output[key][resolver_name] = resolver\n    return output\n\n\ndef join_type_defs(type_defs: List[str]) -> str:\n    return \"\\n\\n\".join(t.strip() for t in type_defs)\n\n\ndef make_executable_schema(\n    type_defs: Union[str, List[str]], resolvers: Union[dict, List[dict]]\n) -> GraphQLSchema:\n    if isinstance(type_defs, list):\n        type_defs = join_type_defs(type_defs)\n\n    schema = build_schema_from_type_definitions(type_defs)\n\n    if isinstance(resolvers, list):\n        add_resolve_functions_to_schema(\n            schema, merge_resolvers(decompose_maps(resolvers))\n        )\n    elif isinstance(resolvers, dict):\n        add_resolve_functions_to_schema(schema, resolvers)\n\n    return schema\n", "path": "ariadne/executable_schema.py"}, {"content": "#! /usr/bin/env python\nimport os\nfrom setuptools import setup\n\nCLASSIFIERS = [\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: BSD License\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python\",\n    \"Programming Language :: Python :: 3.5\",\n    \"Programming Language :: Python :: 3.6\",\n    \"Programming Language :: Python :: 3.7\",\n    \"Topic :: Software Development :: Libraries :: Python Modules\",\n]\n\nREADME_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), \"README.md\")\nwith open(README_PATH, \"r\") as f:\n    README = f.read()\n\nsetup(\n    name=\"ariadne\",\n    author=\"Mirumee Software\",\n    author_email=\"hello@mirumee.com\",\n    description=\"Ariadne is a Python library for implementing GraphQL servers.\",\n    long_description=README,\n    long_description_content_type=\"text/markdown\",\n    license=\"BSD\",\n    version=\"0.1.0\",\n    url=\"https://github.com/mirumee/ariadne\",\n    packages=[\"ariadne\"],\n    install_requires=[\"graphql-core>=2.1\", \"typing>=3.6.0\"],\n    classifiers=CLASSIFIERS,\n    platforms=[\"any\"],\n)\n", "path": "setup.py"}], "after_files": [{"content": "from collections import defaultdict\nfrom itertools import chain\nfrom typing import Iterator, List, Union\n\nfrom graphql import GraphQLSchema\n\nfrom .build_schema import build_schema_from_type_definitions\nfrom .resolvers import add_resolve_functions_to_schema\n\n\ndef decompose_maps(resolvers_maps: List[dict]) -> Iterator[tuple]:\n    def flatten(rm):\n        for key, value in rm.items():\n            for resolver_name, resolver in value.items():\n                yield (key, resolver_name, resolver)\n\n    return chain.from_iterable(flatten(m) for m in resolvers_maps)\n\n\ndef merge_resolvers(resolver_list: Iterator[tuple]) -> dict:\n    output: dict = defaultdict(dict)\n    for key, resolver_name, resolver in resolver_list:\n        output[key][resolver_name] = resolver\n    return output\n\n\ndef join_type_defs(type_defs: List[str]) -> str:\n    return \"\\n\\n\".join(t.strip() for t in type_defs)\n\n\ndef make_executable_schema(\n    type_defs: Union[str, List[str]], resolvers: Union[dict, List[dict]]\n) -> GraphQLSchema:\n    if isinstance(type_defs, list):\n        type_defs = join_type_defs(type_defs)\n\n    schema = build_schema_from_type_definitions(type_defs)\n\n    if isinstance(resolvers, list):\n        add_resolve_functions_to_schema(\n            schema, merge_resolvers(decompose_maps(resolvers))\n        )\n    elif isinstance(resolvers, dict):\n        add_resolve_functions_to_schema(schema, resolvers)\n\n    return schema\n", "path": "ariadne/executable_schema.py"}, {"content": "#! /usr/bin/env python\nimport os\nfrom setuptools import setup\n\nCLASSIFIERS = [\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: BSD License\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python\",\n    \"Programming Language :: Python :: 3.6\",\n    \"Programming Language :: Python :: 3.7\",\n    \"Topic :: Software Development :: Libraries :: Python Modules\",\n]\n\nREADME_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), \"README.md\")\nwith open(README_PATH, \"r\") as f:\n    README = f.read()\n\nsetup(\n    name=\"ariadne\",\n    author=\"Mirumee Software\",\n    author_email=\"hello@mirumee.com\",\n    description=\"Ariadne is a Python library for implementing GraphQL servers.\",\n    long_description=README,\n    long_description_content_type=\"text/markdown\",\n    license=\"BSD\",\n    version=\"0.1.0\",\n    url=\"https://github.com/mirumee/ariadne\",\n    packages=[\"ariadne\"],\n    install_requires=[\"graphql-core>=2.1\", \"typing>=3.6.0\"],\n    classifiers=CLASSIFIERS,\n    platforms=[\"any\"],\n)\n", "path": "setup.py"}]}