We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Installing sbi replaces existing torch version with 2.0.1
Hello, I have a conda environment where PyTorch 1.13 is installed. Installing `sbi` in that environment uninstalls it and installs PyTorch 2.0.1 (with `pip`) instead, as well as many other packages related to CUDA (`cudnn` stuff).

For instance, with the following environment

```
$ conda create -n tempenv python=3.9
$ conda activate tempenv
(tempenv) $ conda install pytorch=1.13.1 cpuonly -c pytorch
```

installing `sbi` leads to

```
(tempenv) $ pip install sbi
Collecting sbi
...
  Attempting uninstall: torch
    Found existing installation: torch 1.13.1
    Uninstalling torch-1.13.1:
      Successfully uninstalled torch-1.13.1
Successfully installed MarkupSafe-2.1.3 absl-py-1.4.0 arviz-0.15.1 cachetools-5.3.1 certifi-2023.5.7 charset-normalizer-3.2.0 cmake-3.26.4 contourpy-1.1.0 cycler-0.11.0 filelock-3.12.2 fonttools-4.40.0 google-auth-2.22.0 google-auth-oauthlib-1.0.0 grpcio-1.56.0 h5netcdf-1.2.0 h5py-3.9.0 idna-3.4 importlib-metadata-6.8.0 importlib-resources-6.0.0 jinja2-3.1.2 joblib-1.3.1 kiwisolver-1.4.4 lit-16.0.6 markdown-3.4.3 matplotlib-3.7.2 mpmath-1.3.0 networkx-3.1 nflows-0.14 numpy-1.25.1 nvidia-cublas-cu11-11.10.3.66 nvidia-cuda-cupti-cu11-11.7.101 nvidia-cuda-nvrtc-cu11-11.7.99 nvidia-cuda-runtime-cu11-11.7.99 nvidia-cudnn-cu11-8.5.0.96 nvidia-cufft-cu11-10.9.0.58 nvidia-curand-cu11-10.2.10.91 nvidia-cusolver-cu11-11.4.0.1 nvidia-cusparse-cu11-11.7.4.91 nvidia-nccl-cu11-2.14.3 nvidia-nvtx-cu11-11.7.91 oauthlib-3.2.2 opt-einsum-3.3.0 packaging-23.1 pandas-2.0.3 pillow-10.0.0 protobuf-4.23.4 pyasn1-0.5.0 pyasn1-modules-0.3.0 pyknos-0.15.1 pyparsing-3.0.9 pyro-api-0.1.2 pyro-ppl-1.8.5 python-dateutil-2.8.2 pytz-2023.3 requests-2.31.0 requests-oauthlib-1.3.1 rsa-4.9 sbi-0.21.0 scikit-learn-1.3.0 scipy-1.11.1 six-1.16.0 sympy-1.12 tensorboard-2.13.0 tensorboard-data-server-0.7.1 threadpoolctl-3.1.0 torch-2.0.1 tqdm-4.65.0 triton-2.0.0 tzdata-2023.3 urllib3-1.26.16 werkzeug-2.3.6 xarray-2023.6.0 xarray-einstats-0.6.0 zipp-3.16.0
```

I don't why this happens but it is quite annoying :cry: Do you know how i can solve this? Thank you for your help!


--- 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 # -*- coding: utf-8 -*-
3 #
4 # This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed
5 # under the Affero General Public License v3, see <https://www.gnu.org/licenses/>.
6 #
7 # Note: To use the 'upload' functionality of this file, you must:
8 #   $ pipenv install twine --dev
9 
10 import io
11 import os
12 import sys
13 from shutil import rmtree
14 
15 from setuptools import Command, find_packages, setup
16 
17 # Package meta-data.
18 NAME = "sbi"
19 DESCRIPTION = "Simulation-based inference."
20 KEYWORDS = "bayesian parameter inference system_identification simulator PyTorch"
21 URL = "https://github.com/mackelab/sbi"
22 EMAIL = "sbi@mackelab.org"
23 AUTHOR = "Álvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis Lückmann, Conor M. Durkan, Michael Deistler, Jan Bölts"
24 REQUIRES_PYTHON = ">=3.6.0"
25 
26 REQUIRED = [
27     "arviz",
28     "joblib>=1.0.0",
29     "matplotlib",
30     "numpy",
31     "pillow",
32     "pyknos>=0.15.1",
33     "pyro-ppl>=1.3.1",
34     "scikit-learn",
35     "scipy",
36     "tensorboard",
37     "torch>=1.8.0",
38     "tqdm",
39 ]
40 
41 EXTRAS = {
42     "dev": [
43         "autoflake",
44         "black",
45         "deepdiff",
46         "flake8",
47         "isort",
48         "jupyter",
49         "mkdocs",
50         "mkdocs-material",
51         "markdown-include",
52         "mkdocs-redirects",
53         "mkdocstrings[python]>=0.18",
54         "nbconvert",
55         "pep517",
56         "pre-commit",
57         "pytest",
58         "pyyaml",
59         "pyright>=1.1.300,<1.1.306",
60         "torchtestcase",
61         "twine",
62     ],
63 }
64 
65 here = os.path.abspath(os.path.dirname(__file__))
66 
67 # Import the README and use it as the long-description.
68 try:
69     with io.open(os.path.join(here, "README.md"), encoding="utf-8") as f:
70         long_description = "\n" + f.read()
71 except FileNotFoundError:
72     long_description = DESCRIPTION
73 
74 # Load the package's __version__.py module as a dictionary.
75 about = {}
76 project_slug = NAME.lower().replace("-", "_").replace(" ", "_")
77 with open(os.path.join(here, project_slug, "__version__.py")) as f:
78     exec(f.read(), about)
79 
80 
81 class UploadCommand(Command):
82     """Support setup.py upload."""
83 
84     description = "Build and publish the package."
85     user_options = []
86 
87     @staticmethod
88     def status(s):
89         """Prints things in bold."""
90         print("\033[1m{0}\033[0m".format(s))
91 
92     def initialize_options(self):
93         pass
94 
95     def finalize_options(self):
96         pass
97 
98     def run(self):
99         try:
100             self.status("Removing previous builds…")
101             rmtree(os.path.join(here, "dist"))
102         except OSError:
103             pass
104 
105         self.status("Building Source and Wheel (universal) distribution…")
106         os.system("{0} setup.py sdist bdist_wheel --universal".format(sys.executable))
107 
108         self.status("Uploading the package to PyPI via Twine…")
109         os.system("twine upload dist/*")
110 
111         self.status("Pushing git tags…")
112         os.system("git tag v{0}".format(about["__version__"]))
113         os.system("git push --tags")
114 
115         sys.exit()
116 
117 
118 setup(
119     name=NAME,
120     version=about["__version__"],
121     description=DESCRIPTION,
122     keywords=KEYWORDS,
123     long_description=long_description,
124     long_description_content_type="text/markdown",
125     author=AUTHOR,
126     author_email=EMAIL,
127     python_requires=REQUIRES_PYTHON,
128     url=URL,
129     packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),
130     install_requires=REQUIRED,
131     extras_require=EXTRAS,
132     include_package_data=True,
133     license="AGPLv3",
134     classifiers=[
135         # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers
136         "Development Status :: 3 - Alpha",
137         "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
138         "Intended Audience :: Developers",
139         "Intended Audience :: Education",
140         "Intended Audience :: Science/Research",
141         "Topic :: Adaptive Technologies",
142         "Topic :: Scientific/Engineering",
143         "Topic :: Scientific/Engineering :: Artificial Intelligence",
144         "Topic :: Scientific/Engineering :: Mathematics",
145         "Programming Language :: Python",
146         "Programming Language :: Python :: 3",
147         "Programming Language :: Python :: 3.6",
148         "Programming Language :: Python :: 3.7",
149         "Programming Language :: Python :: 3.8",
150     ],
151     # $ setup.py publish support.
152     cmdclass=dict(upload=UploadCommand),
153 )
154
```
--- 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
@@ -17,10 +17,13 @@
 # Package meta-data.
 NAME = "sbi"
 DESCRIPTION = "Simulation-based inference."
-KEYWORDS = "bayesian parameter inference system_identification simulator PyTorch"
+KEYWORDS = (
+    "bayesian parameter inference system_identification simulator PyTorch"
+)
 URL = "https://github.com/mackelab/sbi"
 EMAIL = "sbi@mackelab.org"
-AUTHOR = "Álvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis Lückmann, Conor M. Durkan, Michael Deistler, Jan Bölts"
+AUTHOR = """Álvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis Lückmann, Conor M.
+         Durkan, Michael Deistler, Jan Bölts"""
 REQUIRES_PYTHON = ">=3.6.0"
 
 REQUIRED = [
@@ -30,7 +33,7 @@
     "numpy",
     "pillow",
     "pyknos>=0.15.1",
-    "pyro-ppl>=1.3.1",
+    "pyro-ppl>=1.3.1,<1.8.5",
     "scikit-learn",
     "scipy",
     "tensorboard",
@@ -103,7 +106,9 @@
             pass
 
         self.status("Building Source and Wheel (universal) distribution…")
-        os.system("{0} setup.py sdist bdist_wheel --universal".format(sys.executable))
+        os.system(
+            "{0} setup.py sdist bdist_wheel --universal".format(sys.executable)
+        )
 
         self.status("Uploading the package to PyPI via Twine…")
         os.system("twine upload dist/*")
@@ -126,7 +131,9 @@
     author_email=EMAIL,
     python_requires=REQUIRES_PYTHON,
     url=URL,
-    packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),
+    packages=find_packages(
+        exclude=["tests", "*.tests", "*.tests.*", "tests.*"]
+    ),
     install_requires=REQUIRED,
     extras_require=EXTRAS,
     include_package_data=True,
@@ -134,7 +141,8 @@
     classifiers=[
         # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers
         "Development Status :: 3 - Alpha",
-        "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
+        """License :: OSI Approved :: GNU Affero General Public License v3 or later
+        (AGPLv3+)""",
         "Intended Audience :: Developers",
         "Intended Audience :: Education",
         "Intended Audience :: Science/Research",

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -17,10 +17,13 @@\n # Package meta-data.\n NAME = \"sbi\"\n DESCRIPTION = \"Simulation-based inference.\"\n-KEYWORDS = \"bayesian parameter inference system_identification simulator PyTorch\"\n+KEYWORDS = (\n+    \"bayesian parameter inference system_identification simulator PyTorch\"\n+)\n URL = \"https://github.com/mackelab/sbi\"\n EMAIL = \"sbi@mackelab.org\"\n-AUTHOR = \"\u00c1lvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis L\u00fcckmann, Conor M. Durkan, Michael Deistler, Jan B\u00f6lts\"\n+AUTHOR = \"\"\"\u00c1lvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis L\u00fcckmann, Conor M.\n+         Durkan, Michael Deistler, Jan B\u00f6lts\"\"\"\n REQUIRES_PYTHON = \">=3.6.0\"\n \n REQUIRED = [\n@@ -30,7 +33,7 @@\n     \"numpy\",\n     \"pillow\",\n     \"pyknos>=0.15.1\",\n-    \"pyro-ppl>=1.3.1\",\n+    \"pyro-ppl>=1.3.1,<1.8.5\",\n     \"scikit-learn\",\n     \"scipy\",\n     \"tensorboard\",\n@@ -103,7 +106,9 @@\n             pass\n \n         self.status(\"Building Source and Wheel (universal) distribution\u2026\")\n-        os.system(\"{0} setup.py sdist bdist_wheel --universal\".format(sys.executable))\n+        os.system(\n+            \"{0} setup.py sdist bdist_wheel --universal\".format(sys.executable)\n+        )\n \n         self.status(\"Uploading the package to PyPI via Twine\u2026\")\n         os.system(\"twine upload dist/*\")\n@@ -126,7 +131,9 @@\n     author_email=EMAIL,\n     python_requires=REQUIRES_PYTHON,\n     url=URL,\n-    packages=find_packages(exclude=[\"tests\", \"*.tests\", \"*.tests.*\", \"tests.*\"]),\n+    packages=find_packages(\n+        exclude=[\"tests\", \"*.tests\", \"*.tests.*\", \"tests.*\"]\n+    ),\n     install_requires=REQUIRED,\n     extras_require=EXTRAS,\n     include_package_data=True,\n@@ -134,7 +141,8 @@\n     classifiers=[\n         # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers\n         \"Development Status :: 3 - Alpha\",\n-        \"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)\",\n+        \"\"\"License :: OSI Approved :: GNU Affero General Public License v3 or later\n+        (AGPLv3+)\"\"\",\n         \"Intended Audience :: Developers\",\n         \"Intended Audience :: Education\",\n         \"Intended Audience :: Science/Research\",\n", "issue": "Installing sbi replaces existing torch version with 2.0.1\nHello, I have a conda environment where PyTorch 1.13 is installed. Installing `sbi` in that environment uninstalls it and installs PyTorch 2.0.1 (with `pip`) instead, as well as many other packages related to CUDA (`cudnn` stuff).\r\n\r\nFor instance, with the following environment\r\n\r\n```\r\n$ conda create -n tempenv python=3.9\r\n$ conda activate tempenv\r\n(tempenv) $ conda install pytorch=1.13.1 cpuonly -c pytorch\r\n```\r\n\r\ninstalling `sbi` leads to\r\n\r\n```\r\n(tempenv) $ pip install sbi\r\nCollecting sbi\r\n...\r\n  Attempting uninstall: torch\r\n    Found existing installation: torch 1.13.1\r\n    Uninstalling torch-1.13.1:\r\n      Successfully uninstalled torch-1.13.1\r\nSuccessfully installed MarkupSafe-2.1.3 absl-py-1.4.0 arviz-0.15.1 cachetools-5.3.1 certifi-2023.5.7 charset-normalizer-3.2.0 cmake-3.26.4 contourpy-1.1.0 cycler-0.11.0 filelock-3.12.2 fonttools-4.40.0 google-auth-2.22.0 google-auth-oauthlib-1.0.0 grpcio-1.56.0 h5netcdf-1.2.0 h5py-3.9.0 idna-3.4 importlib-metadata-6.8.0 importlib-resources-6.0.0 jinja2-3.1.2 joblib-1.3.1 kiwisolver-1.4.4 lit-16.0.6 markdown-3.4.3 matplotlib-3.7.2 mpmath-1.3.0 networkx-3.1 nflows-0.14 numpy-1.25.1 nvidia-cublas-cu11-11.10.3.66 nvidia-cuda-cupti-cu11-11.7.101 nvidia-cuda-nvrtc-cu11-11.7.99 nvidia-cuda-runtime-cu11-11.7.99 nvidia-cudnn-cu11-8.5.0.96 nvidia-cufft-cu11-10.9.0.58 nvidia-curand-cu11-10.2.10.91 nvidia-cusolver-cu11-11.4.0.1 nvidia-cusparse-cu11-11.7.4.91 nvidia-nccl-cu11-2.14.3 nvidia-nvtx-cu11-11.7.91 oauthlib-3.2.2 opt-einsum-3.3.0 packaging-23.1 pandas-2.0.3 pillow-10.0.0 protobuf-4.23.4 pyasn1-0.5.0 pyasn1-modules-0.3.0 pyknos-0.15.1 pyparsing-3.0.9 pyro-api-0.1.2 pyro-ppl-1.8.5 python-dateutil-2.8.2 pytz-2023.3 requests-2.31.0 requests-oauthlib-1.3.1 rsa-4.9 sbi-0.21.0 scikit-learn-1.3.0 scipy-1.11.1 six-1.16.0 sympy-1.12 tensorboard-2.13.0 tensorboard-data-server-0.7.1 threadpoolctl-3.1.0 torch-2.0.1 tqdm-4.65.0 triton-2.0.0 tzdata-2023.3 urllib3-1.26.16 werkzeug-2.3.6 xarray-2023.6.0 xarray-einstats-0.6.0 zipp-3.16.0\r\n```\r\n\r\nI don't why this happens but it is quite annoying :cry: Do you know how i can solve this? Thank you for your help!\r\n\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n#\n# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed\n# under the Affero General Public License v3, see <https://www.gnu.org/licenses/>.\n#\n# Note: To use the 'upload' functionality of this file, you must:\n#   $ pipenv install twine --dev\n\nimport io\nimport os\nimport sys\nfrom shutil import rmtree\n\nfrom setuptools import Command, find_packages, setup\n\n# Package meta-data.\nNAME = \"sbi\"\nDESCRIPTION = \"Simulation-based inference.\"\nKEYWORDS = \"bayesian parameter inference system_identification simulator PyTorch\"\nURL = \"https://github.com/mackelab/sbi\"\nEMAIL = \"sbi@mackelab.org\"\nAUTHOR = \"\u00c1lvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis L\u00fcckmann, Conor M. Durkan, Michael Deistler, Jan B\u00f6lts\"\nREQUIRES_PYTHON = \">=3.6.0\"\n\nREQUIRED = [\n    \"arviz\",\n    \"joblib>=1.0.0\",\n    \"matplotlib\",\n    \"numpy\",\n    \"pillow\",\n    \"pyknos>=0.15.1\",\n    \"pyro-ppl>=1.3.1\",\n    \"scikit-learn\",\n    \"scipy\",\n    \"tensorboard\",\n    \"torch>=1.8.0\",\n    \"tqdm\",\n]\n\nEXTRAS = {\n    \"dev\": [\n        \"autoflake\",\n        \"black\",\n        \"deepdiff\",\n        \"flake8\",\n        \"isort\",\n        \"jupyter\",\n        \"mkdocs\",\n        \"mkdocs-material\",\n        \"markdown-include\",\n        \"mkdocs-redirects\",\n        \"mkdocstrings[python]>=0.18\",\n        \"nbconvert\",\n        \"pep517\",\n        \"pre-commit\",\n        \"pytest\",\n        \"pyyaml\",\n        \"pyright>=1.1.300,<1.1.306\",\n        \"torchtestcase\",\n        \"twine\",\n    ],\n}\n\nhere = os.path.abspath(os.path.dirname(__file__))\n\n# Import the README and use it as the long-description.\ntry:\n    with io.open(os.path.join(here, \"README.md\"), encoding=\"utf-8\") as f:\n        long_description = \"\\n\" + f.read()\nexcept FileNotFoundError:\n    long_description = DESCRIPTION\n\n# Load the package's __version__.py module as a dictionary.\nabout = {}\nproject_slug = NAME.lower().replace(\"-\", \"_\").replace(\" \", \"_\")\nwith open(os.path.join(here, project_slug, \"__version__.py\")) as f:\n    exec(f.read(), about)\n\n\nclass UploadCommand(Command):\n    \"\"\"Support setup.py upload.\"\"\"\n\n    description = \"Build and publish the package.\"\n    user_options = []\n\n    @staticmethod\n    def status(s):\n        \"\"\"Prints things in bold.\"\"\"\n        print(\"\\033[1m{0}\\033[0m\".format(s))\n\n    def initialize_options(self):\n        pass\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        try:\n            self.status(\"Removing previous builds\u2026\")\n            rmtree(os.path.join(here, \"dist\"))\n        except OSError:\n            pass\n\n        self.status(\"Building Source and Wheel (universal) distribution\u2026\")\n        os.system(\"{0} setup.py sdist bdist_wheel --universal\".format(sys.executable))\n\n        self.status(\"Uploading the package to PyPI via Twine\u2026\")\n        os.system(\"twine upload dist/*\")\n\n        self.status(\"Pushing git tags\u2026\")\n        os.system(\"git tag v{0}\".format(about[\"__version__\"]))\n        os.system(\"git push --tags\")\n\n        sys.exit()\n\n\nsetup(\n    name=NAME,\n    version=about[\"__version__\"],\n    description=DESCRIPTION,\n    keywords=KEYWORDS,\n    long_description=long_description,\n    long_description_content_type=\"text/markdown\",\n    author=AUTHOR,\n    author_email=EMAIL,\n    python_requires=REQUIRES_PYTHON,\n    url=URL,\n    packages=find_packages(exclude=[\"tests\", \"*.tests\", \"*.tests.*\", \"tests.*\"]),\n    install_requires=REQUIRED,\n    extras_require=EXTRAS,\n    include_package_data=True,\n    license=\"AGPLv3\",\n    classifiers=[\n        # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers\n        \"Development Status :: 3 - Alpha\",\n        \"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)\",\n        \"Intended Audience :: Developers\",\n        \"Intended Audience :: Education\",\n        \"Intended Audience :: Science/Research\",\n        \"Topic :: Adaptive Technologies\",\n        \"Topic :: Scientific/Engineering\",\n        \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n        \"Topic :: Scientific/Engineering :: Mathematics\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n    ],\n    # $ setup.py publish support.\n    cmdclass=dict(upload=UploadCommand),\n)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n#\n# This file is part of sbi, a toolkit for simulation-based inference. sbi is licensed\n# under the Affero General Public License v3, see <https://www.gnu.org/licenses/>.\n#\n# Note: To use the 'upload' functionality of this file, you must:\n#   $ pipenv install twine --dev\n\nimport io\nimport os\nimport sys\nfrom shutil import rmtree\n\nfrom setuptools import Command, find_packages, setup\n\n# Package meta-data.\nNAME = \"sbi\"\nDESCRIPTION = \"Simulation-based inference.\"\nKEYWORDS = (\n    \"bayesian parameter inference system_identification simulator PyTorch\"\n)\nURL = \"https://github.com/mackelab/sbi\"\nEMAIL = \"sbi@mackelab.org\"\nAUTHOR = \"\"\"\u00c1lvaro Tejero-Cantero, Jakob H. Macke, Jan-Matthis L\u00fcckmann, Conor M.\n         Durkan, Michael Deistler, Jan B\u00f6lts\"\"\"\nREQUIRES_PYTHON = \">=3.6.0\"\n\nREQUIRED = [\n    \"arviz\",\n    \"joblib>=1.0.0\",\n    \"matplotlib\",\n    \"numpy\",\n    \"pillow\",\n    \"pyknos>=0.15.1\",\n    \"pyro-ppl>=1.3.1,<1.8.5\",\n    \"scikit-learn\",\n    \"scipy\",\n    \"tensorboard\",\n    \"torch>=1.8.0\",\n    \"tqdm\",\n]\n\nEXTRAS = {\n    \"dev\": [\n        \"autoflake\",\n        \"black\",\n        \"deepdiff\",\n        \"flake8\",\n        \"isort\",\n        \"jupyter\",\n        \"mkdocs\",\n        \"mkdocs-material\",\n        \"markdown-include\",\n        \"mkdocs-redirects\",\n        \"mkdocstrings[python]>=0.18\",\n        \"nbconvert\",\n        \"pep517\",\n        \"pre-commit\",\n        \"pytest\",\n        \"pyyaml\",\n        \"pyright>=1.1.300,<1.1.306\",\n        \"torchtestcase\",\n        \"twine\",\n    ],\n}\n\nhere = os.path.abspath(os.path.dirname(__file__))\n\n# Import the README and use it as the long-description.\ntry:\n    with io.open(os.path.join(here, \"README.md\"), encoding=\"utf-8\") as f:\n        long_description = \"\\n\" + f.read()\nexcept FileNotFoundError:\n    long_description = DESCRIPTION\n\n# Load the package's __version__.py module as a dictionary.\nabout = {}\nproject_slug = NAME.lower().replace(\"-\", \"_\").replace(\" \", \"_\")\nwith open(os.path.join(here, project_slug, \"__version__.py\")) as f:\n    exec(f.read(), about)\n\n\nclass UploadCommand(Command):\n    \"\"\"Support setup.py upload.\"\"\"\n\n    description = \"Build and publish the package.\"\n    user_options = []\n\n    @staticmethod\n    def status(s):\n        \"\"\"Prints things in bold.\"\"\"\n        print(\"\\033[1m{0}\\033[0m\".format(s))\n\n    def initialize_options(self):\n        pass\n\n    def finalize_options(self):\n        pass\n\n    def run(self):\n        try:\n            self.status(\"Removing previous builds\u2026\")\n            rmtree(os.path.join(here, \"dist\"))\n        except OSError:\n            pass\n\n        self.status(\"Building Source and Wheel (universal) distribution\u2026\")\n        os.system(\n            \"{0} setup.py sdist bdist_wheel --universal\".format(sys.executable)\n        )\n\n        self.status(\"Uploading the package to PyPI via Twine\u2026\")\n        os.system(\"twine upload dist/*\")\n\n        self.status(\"Pushing git tags\u2026\")\n        os.system(\"git tag v{0}\".format(about[\"__version__\"]))\n        os.system(\"git push --tags\")\n\n        sys.exit()\n\n\nsetup(\n    name=NAME,\n    version=about[\"__version__\"],\n    description=DESCRIPTION,\n    keywords=KEYWORDS,\n    long_description=long_description,\n    long_description_content_type=\"text/markdown\",\n    author=AUTHOR,\n    author_email=EMAIL,\n    python_requires=REQUIRES_PYTHON,\n    url=URL,\n    packages=find_packages(\n        exclude=[\"tests\", \"*.tests\", \"*.tests.*\", \"tests.*\"]\n    ),\n    install_requires=REQUIRED,\n    extras_require=EXTRAS,\n    include_package_data=True,\n    license=\"AGPLv3\",\n    classifiers=[\n        # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers\n        \"Development Status :: 3 - Alpha\",\n        \"\"\"License :: OSI Approved :: GNU Affero General Public License v3 or later\n        (AGPLv3+)\"\"\",\n        \"Intended Audience :: Developers\",\n        \"Intended Audience :: Education\",\n        \"Intended Audience :: Science/Research\",\n        \"Topic :: Adaptive Technologies\",\n        \"Topic :: Scientific/Engineering\",\n        \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n        \"Topic :: Scientific/Engineering :: Mathematics\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n    ],\n    # $ setup.py publish support.\n    cmdclass=dict(upload=UploadCommand),\n)\n", "path": "setup.py"}]}