We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
mypy==0.782 will cause mypy-zope dependency regression in future pip releases
## Description

Pip is planning to use a [new resolver by default from `20.3`](https://pip.pypa.io/en/latest/user_guide/#changes-to-the-pip-dependency-resolver-in-20-2-2020), which is more strict in it's dependency handling.

Currently, `tox`'s `mypy` test environment defines this:

```
deps =
    {[base]deps}
    mypy==0.782
    mypy-zope
```

Given that input, `pip>=20.3` will likely either:
1. Choose an older `mypy-zope` package that works with `mypy==0.782`, causing a regression.
2. ~~Reject installing outright, as this stricter dependency resolver will refuse to install incompatible packages.~~


--- 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 
3 # Copyright 2014-2017 OpenMarket Ltd
4 # Copyright 2017 Vector Creations Ltd
5 # Copyright 2017-2018 New Vector Ltd
6 #
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
10 #
11 #     http://www.apache.org/licenses/LICENSE-2.0
12 #
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 import glob
19 import os
20 
21 from setuptools import Command, find_packages, setup
22 
23 here = os.path.abspath(os.path.dirname(__file__))
24 
25 
26 # Some notes on `setup.py test`:
27 #
28 # Once upon a time we used to try to make `setup.py test` run `tox` to run the
29 # tests. That's a bad idea for three reasons:
30 #
31 # 1: `setup.py test` is supposed to find out whether the tests work in the
32 #    *current* environmentt, not whatever tox sets up.
33 # 2: Empirically, trying to install tox during the test run wasn't working ("No
34 #    module named virtualenv").
35 # 3: The tox documentation advises against it[1].
36 #
37 # Even further back in time, we used to use setuptools_trial [2]. That has its
38 # own set of issues: for instance, it requires installation of Twisted to build
39 # an sdist (because the recommended mode of usage is to add it to
40 # `setup_requires`). That in turn means that in order to successfully run tox
41 # you have to have the python header files installed for whichever version of
42 # python tox uses (which is python3 on recent ubuntus, for example).
43 #
44 # So, for now at least, we stick with what appears to be the convention among
45 # Twisted projects, and don't attempt to do anything when someone runs
46 # `setup.py test`; instead we direct people to run `trial` directly if they
47 # care.
48 #
49 # [1]: http://tox.readthedocs.io/en/2.5.0/example/basic.html#integration-with-setup-py-test-command
50 # [2]: https://pypi.python.org/pypi/setuptools_trial
51 class TestCommand(Command):
52     user_options = []
53 
54     def initialize_options(self):
55         pass
56 
57     def finalize_options(self):
58         pass
59 
60     def run(self):
61         print(
62             """Synapse's tests cannot be run via setup.py. To run them, try:
63      PYTHONPATH="." trial tests
64 """
65         )
66 
67 
68 def read_file(path_segments):
69     """Read a file from the package. Takes a list of strings to join to
70     make the path"""
71     file_path = os.path.join(here, *path_segments)
72     with open(file_path) as f:
73         return f.read()
74 
75 
76 def exec_file(path_segments):
77     """Execute a single python file to get the variables defined in it"""
78     result = {}
79     code = read_file(path_segments)
80     exec(code, result)
81     return result
82 
83 
84 version = exec_file(("synapse", "__init__.py"))["__version__"]
85 dependencies = exec_file(("synapse", "python_dependencies.py"))
86 long_description = read_file(("README.rst",))
87 
88 REQUIREMENTS = dependencies["REQUIREMENTS"]
89 CONDITIONAL_REQUIREMENTS = dependencies["CONDITIONAL_REQUIREMENTS"]
90 ALL_OPTIONAL_REQUIREMENTS = dependencies["ALL_OPTIONAL_REQUIREMENTS"]
91 
92 # Make `pip install matrix-synapse[all]` install all the optional dependencies.
93 CONDITIONAL_REQUIREMENTS["all"] = list(ALL_OPTIONAL_REQUIREMENTS)
94 
95 # Developer dependencies should not get included in "all".
96 #
97 # We pin black so that our tests don't start failing on new releases.
98 CONDITIONAL_REQUIREMENTS["lint"] = [
99     "isort==5.0.3",
100     "black==19.10b0",
101     "flake8-comprehensions",
102     "flake8",
103 ]
104 
105 # Dependencies which are exclusively required by unit test code. This is
106 # NOT a list of all modules that are necessary to run the unit tests.
107 # Tests assume that all optional dependencies are installed.
108 #
109 # parameterized_class decorator was introduced in parameterized 0.7.0
110 CONDITIONAL_REQUIREMENTS["test"] = ["mock>=2.0", "parameterized>=0.7.0"]
111 
112 setup(
113     name="matrix-synapse",
114     version=version,
115     packages=find_packages(exclude=["tests", "tests.*"]),
116     description="Reference homeserver for the Matrix decentralised comms protocol",
117     install_requires=REQUIREMENTS,
118     extras_require=CONDITIONAL_REQUIREMENTS,
119     include_package_data=True,
120     zip_safe=False,
121     long_description=long_description,
122     python_requires="~=3.5",
123     classifiers=[
124         "Development Status :: 5 - Production/Stable",
125         "Topic :: Communications :: Chat",
126         "License :: OSI Approved :: Apache Software License",
127         "Programming Language :: Python :: 3 :: Only",
128         "Programming Language :: Python :: 3.5",
129         "Programming Language :: Python :: 3.6",
130         "Programming Language :: Python :: 3.7",
131         "Programming Language :: Python :: 3.8",
132     ],
133     scripts=["synctl"] + glob.glob("scripts/*"),
134     cmdclass={"test": TestCommand},
135 )
136
```
--- 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
@@ -102,6 +102,8 @@
     "flake8",
 ]
 
+CONDITIONAL_REQUIREMENTS["mypy"] = ["mypy==0.790", "mypy-zope"]
+
 # Dependencies which are exclusively required by unit test code. This is
 # NOT a list of all modules that are necessary to run the unit tests.
 # Tests assume that all optional dependencies are installed.

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -102,6 +102,8 @@\n     \"flake8\",\n ]\n \n+CONDITIONAL_REQUIREMENTS[\"mypy\"] = [\"mypy==0.790\", \"mypy-zope\"]\n+\n # Dependencies which are exclusively required by unit test code. This is\n # NOT a list of all modules that are necessary to run the unit tests.\n # Tests assume that all optional dependencies are installed.\n", "issue": "mypy==0.782 will cause mypy-zope dependency regression in future pip releases\n## Description\r\n\r\nPip is planning to use a [new resolver by default from `20.3`](https://pip.pypa.io/en/latest/user_guide/#changes-to-the-pip-dependency-resolver-in-20-2-2020), which is more strict in it's dependency handling.\r\n\r\nCurrently, `tox`'s `mypy` test environment defines this:\r\n\r\n```\r\ndeps =\r\n    {[base]deps}\r\n    mypy==0.782\r\n    mypy-zope\r\n```\r\n\r\nGiven that input, `pip>=20.3` will likely either:\r\n1. Choose an older `mypy-zope` package that works with `mypy==0.782`, causing a regression.\r\n2. ~~Reject installing outright, as this stricter dependency resolver will refuse to install incompatible packages.~~\r\n\n", "before_files": [{"content": "#!/usr/bin/env python\n\n# Copyright 2014-2017 OpenMarket Ltd\n# Copyright 2017 Vector Creations Ltd\n# Copyright 2017-2018 New Vector Ltd\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nimport glob\nimport os\n\nfrom setuptools import Command, find_packages, setup\n\nhere = os.path.abspath(os.path.dirname(__file__))\n\n\n# Some notes on `setup.py test`:\n#\n# Once upon a time we used to try to make `setup.py test` run `tox` to run the\n# tests. That's a bad idea for three reasons:\n#\n# 1: `setup.py test` is supposed to find out whether the tests work in the\n#    *current* environmentt, not whatever tox sets up.\n# 2: Empirically, trying to install tox during the test run wasn't working (\"No\n#    module named virtualenv\").\n# 3: The tox documentation advises against it[1].\n#\n# Even further back in time, we used to use setuptools_trial [2]. That has its\n# own set of issues: for instance, it requires installation of Twisted to build\n# an sdist (because the recommended mode of usage is to add it to\n# `setup_requires`). That in turn means that in order to successfully run tox\n# you have to have the python header files installed for whichever version of\n# python tox uses (which is python3 on recent ubuntus, for example).\n#\n# So, for now at least, we stick with what appears to be the convention among\n# Twisted projects, and don't attempt to do anything when someone runs\n# `setup.py test`; instead we direct people to run `trial` directly if they\n# care.\n#\n# [1]: http://tox.readthedocs.io/en/2.5.0/example/basic.html#integration-with-setup-py-test-command\n# [2]: https://pypi.python.org/pypi/setuptools_trial\nclass TestCommand(Command):\n    user_options = []\n\n    def initialize_options(self):\n        pass\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        print(\n            \"\"\"Synapse's tests cannot be run via setup.py. To run them, try:\n     PYTHONPATH=\".\" trial tests\n\"\"\"\n        )\n\n\ndef read_file(path_segments):\n    \"\"\"Read a file from the package. Takes a list of strings to join to\n    make the path\"\"\"\n    file_path = os.path.join(here, *path_segments)\n    with open(file_path) as f:\n        return f.read()\n\n\ndef exec_file(path_segments):\n    \"\"\"Execute a single python file to get the variables defined in it\"\"\"\n    result = {}\n    code = read_file(path_segments)\n    exec(code, result)\n    return result\n\n\nversion = exec_file((\"synapse\", \"__init__.py\"))[\"__version__\"]\ndependencies = exec_file((\"synapse\", \"python_dependencies.py\"))\nlong_description = read_file((\"README.rst\",))\n\nREQUIREMENTS = dependencies[\"REQUIREMENTS\"]\nCONDITIONAL_REQUIREMENTS = dependencies[\"CONDITIONAL_REQUIREMENTS\"]\nALL_OPTIONAL_REQUIREMENTS = dependencies[\"ALL_OPTIONAL_REQUIREMENTS\"]\n\n# Make `pip install matrix-synapse[all]` install all the optional dependencies.\nCONDITIONAL_REQUIREMENTS[\"all\"] = list(ALL_OPTIONAL_REQUIREMENTS)\n\n# Developer dependencies should not get included in \"all\".\n#\n# We pin black so that our tests don't start failing on new releases.\nCONDITIONAL_REQUIREMENTS[\"lint\"] = [\n    \"isort==5.0.3\",\n    \"black==19.10b0\",\n    \"flake8-comprehensions\",\n    \"flake8\",\n]\n\n# Dependencies which are exclusively required by unit test code. This is\n# NOT a list of all modules that are necessary to run the unit tests.\n# Tests assume that all optional dependencies are installed.\n#\n# parameterized_class decorator was introduced in parameterized 0.7.0\nCONDITIONAL_REQUIREMENTS[\"test\"] = [\"mock>=2.0\", \"parameterized>=0.7.0\"]\n\nsetup(\n    name=\"matrix-synapse\",\n    version=version,\n    packages=find_packages(exclude=[\"tests\", \"tests.*\"]),\n    description=\"Reference homeserver for the Matrix decentralised comms protocol\",\n    install_requires=REQUIREMENTS,\n    extras_require=CONDITIONAL_REQUIREMENTS,\n    include_package_data=True,\n    zip_safe=False,\n    long_description=long_description,\n    python_requires=\"~=3.5\",\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Topic :: Communications :: Chat\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Programming Language :: Python :: 3 :: Only\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n    ],\n    scripts=[\"synctl\"] + glob.glob(\"scripts/*\"),\n    cmdclass={\"test\": TestCommand},\n)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python\n\n# Copyright 2014-2017 OpenMarket Ltd\n# Copyright 2017 Vector Creations Ltd\n# Copyright 2017-2018 New Vector Ltd\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\nimport glob\nimport os\n\nfrom setuptools import Command, find_packages, setup\n\nhere = os.path.abspath(os.path.dirname(__file__))\n\n\n# Some notes on `setup.py test`:\n#\n# Once upon a time we used to try to make `setup.py test` run `tox` to run the\n# tests. That's a bad idea for three reasons:\n#\n# 1: `setup.py test` is supposed to find out whether the tests work in the\n#    *current* environmentt, not whatever tox sets up.\n# 2: Empirically, trying to install tox during the test run wasn't working (\"No\n#    module named virtualenv\").\n# 3: The tox documentation advises against it[1].\n#\n# Even further back in time, we used to use setuptools_trial [2]. That has its\n# own set of issues: for instance, it requires installation of Twisted to build\n# an sdist (because the recommended mode of usage is to add it to\n# `setup_requires`). That in turn means that in order to successfully run tox\n# you have to have the python header files installed for whichever version of\n# python tox uses (which is python3 on recent ubuntus, for example).\n#\n# So, for now at least, we stick with what appears to be the convention among\n# Twisted projects, and don't attempt to do anything when someone runs\n# `setup.py test`; instead we direct people to run `trial` directly if they\n# care.\n#\n# [1]: http://tox.readthedocs.io/en/2.5.0/example/basic.html#integration-with-setup-py-test-command\n# [2]: https://pypi.python.org/pypi/setuptools_trial\nclass TestCommand(Command):\n    user_options = []\n\n    def initialize_options(self):\n        pass\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        print(\n            \"\"\"Synapse's tests cannot be run via setup.py. To run them, try:\n     PYTHONPATH=\".\" trial tests\n\"\"\"\n        )\n\n\ndef read_file(path_segments):\n    \"\"\"Read a file from the package. Takes a list of strings to join to\n    make the path\"\"\"\n    file_path = os.path.join(here, *path_segments)\n    with open(file_path) as f:\n        return f.read()\n\n\ndef exec_file(path_segments):\n    \"\"\"Execute a single python file to get the variables defined in it\"\"\"\n    result = {}\n    code = read_file(path_segments)\n    exec(code, result)\n    return result\n\n\nversion = exec_file((\"synapse\", \"__init__.py\"))[\"__version__\"]\ndependencies = exec_file((\"synapse\", \"python_dependencies.py\"))\nlong_description = read_file((\"README.rst\",))\n\nREQUIREMENTS = dependencies[\"REQUIREMENTS\"]\nCONDITIONAL_REQUIREMENTS = dependencies[\"CONDITIONAL_REQUIREMENTS\"]\nALL_OPTIONAL_REQUIREMENTS = dependencies[\"ALL_OPTIONAL_REQUIREMENTS\"]\n\n# Make `pip install matrix-synapse[all]` install all the optional dependencies.\nCONDITIONAL_REQUIREMENTS[\"all\"] = list(ALL_OPTIONAL_REQUIREMENTS)\n\n# Developer dependencies should not get included in \"all\".\n#\n# We pin black so that our tests don't start failing on new releases.\nCONDITIONAL_REQUIREMENTS[\"lint\"] = [\n    \"isort==5.0.3\",\n    \"black==19.10b0\",\n    \"flake8-comprehensions\",\n    \"flake8\",\n]\n\nCONDITIONAL_REQUIREMENTS[\"mypy\"] = [\"mypy==0.790\", \"mypy-zope\"]\n\n# Dependencies which are exclusively required by unit test code. This is\n# NOT a list of all modules that are necessary to run the unit tests.\n# Tests assume that all optional dependencies are installed.\n#\n# parameterized_class decorator was introduced in parameterized 0.7.0\nCONDITIONAL_REQUIREMENTS[\"test\"] = [\"mock>=2.0\", \"parameterized>=0.7.0\"]\n\nsetup(\n    name=\"matrix-synapse\",\n    version=version,\n    packages=find_packages(exclude=[\"tests\", \"tests.*\"]),\n    description=\"Reference homeserver for the Matrix decentralised comms protocol\",\n    install_requires=REQUIREMENTS,\n    extras_require=CONDITIONAL_REQUIREMENTS,\n    include_package_data=True,\n    zip_safe=False,\n    long_description=long_description,\n    python_requires=\"~=3.5\",\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"Topic :: Communications :: Chat\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Programming Language :: Python :: 3 :: Only\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n    ],\n    scripts=[\"synctl\"] + glob.glob(\"scripts/*\"),\n    cmdclass={\"test\": TestCommand},\n)\n", "path": "setup.py"}]}