We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add back `environment.yml` file
I realized why we might want to maintain an `environment.yml` file in parallel with our `requirements.txt` file: `requirements.txt` will be installed via `pip`, whereas if you create an environment via `conda`, the packages will be installed / maintained via `conda`.  This can be useful for those who try to `conda install` everything (since it has different package version logic + handles non-python dependencies).

--- 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 # Licensed under LICENSE.md; also available at https://www.prefect.io/licenses/alpha-eula
2 
3 from setuptools import find_packages, setup
4 
5 import sys
6 import versioneer
7 
8 install_requires = [
9     "click >= 6.7, < 7.0",
10     "cloudpickle >= 0.6.0",
11     "croniter >= 0.3.23, < 0.4",
12     "cryptography >= 2.2.2, < 3.0",
13     "dask >= 0.18, < 0.19",
14     "distributed >= 1.21.8, < 2.0",
15     "docker >= 3.4.1, < 3.5",
16     "marshmallow == 3.0.0b19",
17     "marshmallow-oneofschema >= 2.0.0b2, < 3.0",
18     "mypy >= 0.600, < 0.700",
19     "mypy_extensions >= 0.4.0, < 0.5",
20     "pendulum >= 2.0.4, < 3.0",
21     "python-dateutil >= 2.7.3, < 3.0",
22     "requests >= 2.20, < 3.0",
23     "toml >= 0.9.4, < 1.0",
24     "typing >= 3.6.4, < 4.0",
25     "typing_extensions >= 3.6.4, < 4.0",
26     "xxhash >= 1.2.0, < 2.0",
27 ]
28 
29 templates = ["jinja2 >= 2.0, < 3.0"]
30 viz = ["bokeh == 0.13.0", "graphviz >= 0.8.3"]
31 dev = [
32     "pre-commit",
33     "pytest >= 3.8, < 4.0",
34     "pytest-cov",
35     "pytest-env",
36     "pytest-xdist",
37     "Pygments == 2.2.0",
38 ]
39 
40 if sys.version_info >= (3, 6):
41     dev += ["black"]
42 
43 extras = {
44     "dev": dev + viz,
45     "viz": viz,
46     "templates": templates,
47     "all_extras": dev + templates + viz,
48 }
49 
50 setup(
51     name="prefect",
52     version=versioneer.get_version(),
53     cmdclass=versioneer.get_cmdclass(),
54     description="",
55     long_description=open("README.md").read(),
56     url="https://www.github.com/prefecthq/prefect",
57     author="Prefect Technologies, Inc.",
58     author_email="help@prefect.io",
59     install_requires=install_requires,
60     extras_require=extras,
61     scripts=[],
62     packages=find_packages(where="src"),
63     package_dir={"": "src"},
64     include_package_data=True,
65     entry_points={"console_scripts": ["prefect=prefect.cli:cli"]},
66 )
67
```
--- 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
@@ -2,51 +2,39 @@
 
 from setuptools import find_packages, setup
 
+import configparser
 import sys
 import versioneer
 
-install_requires = [
-    "click >= 6.7, < 7.0",
-    "cloudpickle >= 0.6.0",
-    "croniter >= 0.3.23, < 0.4",
-    "cryptography >= 2.2.2, < 3.0",
-    "dask >= 0.18, < 0.19",
-    "distributed >= 1.21.8, < 2.0",
-    "docker >= 3.4.1, < 3.5",
-    "marshmallow == 3.0.0b19",
-    "marshmallow-oneofschema >= 2.0.0b2, < 3.0",
-    "mypy >= 0.600, < 0.700",
-    "mypy_extensions >= 0.4.0, < 0.5",
-    "pendulum >= 2.0.4, < 3.0",
-    "python-dateutil >= 2.7.3, < 3.0",
-    "requests >= 2.20, < 3.0",
-    "toml >= 0.9.4, < 1.0",
-    "typing >= 3.6.4, < 4.0",
-    "typing_extensions >= 3.6.4, < 4.0",
-    "xxhash >= 1.2.0, < 2.0",
-]
+config = configparser.ConfigParser()
+config.read("requirements.ini")
 
-templates = ["jinja2 >= 2.0, < 3.0"]
-viz = ["bokeh == 0.13.0", "graphviz >= 0.8.3"]
-dev = [
-    "pre-commit",
-    "pytest >= 3.8, < 4.0",
-    "pytest-cov",
-    "pytest-env",
-    "pytest-xdist",
-    "Pygments == 2.2.0",
-]
+## base requirements
+install_requires = ["".join(req) for req in config["base"].items()]
 
-if sys.version_info >= (3, 6):
-    dev += ["black"]
+## section dependencies
+includes = {}
+for section in config.sections():
+    includes[section] = config[section].pop("include", "").split(",")
 
 extras = {
-    "dev": dev + viz,
-    "viz": viz,
-    "templates": templates,
-    "all_extras": dev + templates + viz,
+    "dev": ["".join(req) for req in config["dev"].items()],
+    "viz": ["".join(req) for req in config["viz"].items()],
+    "templates": ["".join(req) for req in config["templates"].items()],
 }
 
+## process include keyword for related sections
+for section in extras:
+    for other in includes[section]:
+        extras[section] += extras.get(other.strip(), [])
+
+
+if sys.version_info >= (3, 6):
+    extras["dev"] += ["black"]
+
+extras["all_extras"] = extras["dev"] + extras["viz"] + extras["templates"]
+
+
 setup(
     name="prefect",
     version=versioneer.get_version(),

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -2,51 +2,39 @@\n \n from setuptools import find_packages, setup\n \n+import configparser\n import sys\n import versioneer\n \n-install_requires = [\n-    \"click >= 6.7, < 7.0\",\n-    \"cloudpickle >= 0.6.0\",\n-    \"croniter >= 0.3.23, < 0.4\",\n-    \"cryptography >= 2.2.2, < 3.0\",\n-    \"dask >= 0.18, < 0.19\",\n-    \"distributed >= 1.21.8, < 2.0\",\n-    \"docker >= 3.4.1, < 3.5\",\n-    \"marshmallow == 3.0.0b19\",\n-    \"marshmallow-oneofschema >= 2.0.0b2, < 3.0\",\n-    \"mypy >= 0.600, < 0.700\",\n-    \"mypy_extensions >= 0.4.0, < 0.5\",\n-    \"pendulum >= 2.0.4, < 3.0\",\n-    \"python-dateutil >= 2.7.3, < 3.0\",\n-    \"requests >= 2.20, < 3.0\",\n-    \"toml >= 0.9.4, < 1.0\",\n-    \"typing >= 3.6.4, < 4.0\",\n-    \"typing_extensions >= 3.6.4, < 4.0\",\n-    \"xxhash >= 1.2.0, < 2.0\",\n-]\n+config = configparser.ConfigParser()\n+config.read(\"requirements.ini\")\n \n-templates = [\"jinja2 >= 2.0, < 3.0\"]\n-viz = [\"bokeh == 0.13.0\", \"graphviz >= 0.8.3\"]\n-dev = [\n-    \"pre-commit\",\n-    \"pytest >= 3.8, < 4.0\",\n-    \"pytest-cov\",\n-    \"pytest-env\",\n-    \"pytest-xdist\",\n-    \"Pygments == 2.2.0\",\n-]\n+## base requirements\n+install_requires = [\"\".join(req) for req in config[\"base\"].items()]\n \n-if sys.version_info >= (3, 6):\n-    dev += [\"black\"]\n+## section dependencies\n+includes = {}\n+for section in config.sections():\n+    includes[section] = config[section].pop(\"include\", \"\").split(\",\")\n \n extras = {\n-    \"dev\": dev + viz,\n-    \"viz\": viz,\n-    \"templates\": templates,\n-    \"all_extras\": dev + templates + viz,\n+    \"dev\": [\"\".join(req) for req in config[\"dev\"].items()],\n+    \"viz\": [\"\".join(req) for req in config[\"viz\"].items()],\n+    \"templates\": [\"\".join(req) for req in config[\"templates\"].items()],\n }\n \n+## process include keyword for related sections\n+for section in extras:\n+    for other in includes[section]:\n+        extras[section] += extras.get(other.strip(), [])\n+\n+\n+if sys.version_info >= (3, 6):\n+    extras[\"dev\"] += [\"black\"]\n+\n+extras[\"all_extras\"] = extras[\"dev\"] + extras[\"viz\"] + extras[\"templates\"]\n+\n+\n setup(\n     name=\"prefect\",\n     version=versioneer.get_version(),\n", "issue": "Add back `environment.yml` file\nI realized why we might want to maintain an `environment.yml` file in parallel with our `requirements.txt` file: `requirements.txt` will be installed via `pip`, whereas if you create an environment via `conda`, the packages will be installed / maintained via `conda`.  This can be useful for those who try to `conda install` everything (since it has different package version logic + handles non-python dependencies).\n", "before_files": [{"content": "# Licensed under LICENSE.md; also available at https://www.prefect.io/licenses/alpha-eula\n\nfrom setuptools import find_packages, setup\n\nimport sys\nimport versioneer\n\ninstall_requires = [\n    \"click >= 6.7, < 7.0\",\n    \"cloudpickle >= 0.6.0\",\n    \"croniter >= 0.3.23, < 0.4\",\n    \"cryptography >= 2.2.2, < 3.0\",\n    \"dask >= 0.18, < 0.19\",\n    \"distributed >= 1.21.8, < 2.0\",\n    \"docker >= 3.4.1, < 3.5\",\n    \"marshmallow == 3.0.0b19\",\n    \"marshmallow-oneofschema >= 2.0.0b2, < 3.0\",\n    \"mypy >= 0.600, < 0.700\",\n    \"mypy_extensions >= 0.4.0, < 0.5\",\n    \"pendulum >= 2.0.4, < 3.0\",\n    \"python-dateutil >= 2.7.3, < 3.0\",\n    \"requests >= 2.20, < 3.0\",\n    \"toml >= 0.9.4, < 1.0\",\n    \"typing >= 3.6.4, < 4.0\",\n    \"typing_extensions >= 3.6.4, < 4.0\",\n    \"xxhash >= 1.2.0, < 2.0\",\n]\n\ntemplates = [\"jinja2 >= 2.0, < 3.0\"]\nviz = [\"bokeh == 0.13.0\", \"graphviz >= 0.8.3\"]\ndev = [\n    \"pre-commit\",\n    \"pytest >= 3.8, < 4.0\",\n    \"pytest-cov\",\n    \"pytest-env\",\n    \"pytest-xdist\",\n    \"Pygments == 2.2.0\",\n]\n\nif sys.version_info >= (3, 6):\n    dev += [\"black\"]\n\nextras = {\n    \"dev\": dev + viz,\n    \"viz\": viz,\n    \"templates\": templates,\n    \"all_extras\": dev + templates + viz,\n}\n\nsetup(\n    name=\"prefect\",\n    version=versioneer.get_version(),\n    cmdclass=versioneer.get_cmdclass(),\n    description=\"\",\n    long_description=open(\"README.md\").read(),\n    url=\"https://www.github.com/prefecthq/prefect\",\n    author=\"Prefect Technologies, Inc.\",\n    author_email=\"help@prefect.io\",\n    install_requires=install_requires,\n    extras_require=extras,\n    scripts=[],\n    packages=find_packages(where=\"src\"),\n    package_dir={\"\": \"src\"},\n    include_package_data=True,\n    entry_points={\"console_scripts\": [\"prefect=prefect.cli:cli\"]},\n)\n", "path": "setup.py"}], "after_files": [{"content": "# Licensed under LICENSE.md; also available at https://www.prefect.io/licenses/alpha-eula\n\nfrom setuptools import find_packages, setup\n\nimport configparser\nimport sys\nimport versioneer\n\nconfig = configparser.ConfigParser()\nconfig.read(\"requirements.ini\")\n\n## base requirements\ninstall_requires = [\"\".join(req) for req in config[\"base\"].items()]\n\n## section dependencies\nincludes = {}\nfor section in config.sections():\n    includes[section] = config[section].pop(\"include\", \"\").split(\",\")\n\nextras = {\n    \"dev\": [\"\".join(req) for req in config[\"dev\"].items()],\n    \"viz\": [\"\".join(req) for req in config[\"viz\"].items()],\n    \"templates\": [\"\".join(req) for req in config[\"templates\"].items()],\n}\n\n## process include keyword for related sections\nfor section in extras:\n    for other in includes[section]:\n        extras[section] += extras.get(other.strip(), [])\n\n\nif sys.version_info >= (3, 6):\n    extras[\"dev\"] += [\"black\"]\n\nextras[\"all_extras\"] = extras[\"dev\"] + extras[\"viz\"] + extras[\"templates\"]\n\n\nsetup(\n    name=\"prefect\",\n    version=versioneer.get_version(),\n    cmdclass=versioneer.get_cmdclass(),\n    description=\"\",\n    long_description=open(\"README.md\").read(),\n    url=\"https://www.github.com/prefecthq/prefect\",\n    author=\"Prefect Technologies, Inc.\",\n    author_email=\"help@prefect.io\",\n    install_requires=install_requires,\n    extras_require=extras,\n    scripts=[],\n    packages=find_packages(where=\"src\"),\n    package_dir={\"\": \"src\"},\n    include_package_data=True,\n    entry_points={\"console_scripts\": [\"prefect=prefect.cli:cli\"]},\n)\n", "path": "setup.py"}]}