prompt: 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()
  
  ```
  
golden_diff: 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(),
  
verification_info: {"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"}]}