We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Write README


--- 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 import io
2 import os
3 import re
4 import subprocess
5 from typing import List, Set
6 
7 from packaging.version import parse, Version
8 import setuptools
9 import torch
10 from torch.utils.cpp_extension import BuildExtension, CUDAExtension, CUDA_HOME
11 
12 ROOT_DIR = os.path.dirname(__file__)
13 
14 # Compiler flags.
15 CXX_FLAGS = ["-g", "-O2", "-std=c++17"]
16 # TODO(woosuk): Should we use -O3?
17 NVCC_FLAGS = ["-O2", "-std=c++17"]
18 
19 ABI = 1 if torch._C._GLIBCXX_USE_CXX11_ABI else 0
20 CXX_FLAGS += [f"-D_GLIBCXX_USE_CXX11_ABI={ABI}"]
21 NVCC_FLAGS += [f"-D_GLIBCXX_USE_CXX11_ABI={ABI}"]
22 
23 if not torch.cuda.is_available():
24     raise RuntimeError(
25         f"Cannot find CUDA at CUDA_HOME: {CUDA_HOME}. "
26         "CUDA must be available in order to build the package.")
27 
28 
29 def get_nvcc_cuda_version(cuda_dir: str) -> Version:
30     """Get the CUDA version from nvcc.
31 
32     Adapted from https://github.com/NVIDIA/apex/blob/8b7a1ff183741dd8f9b87e7bafd04cfde99cea28/setup.py
33     """
34     nvcc_output = subprocess.check_output([cuda_dir + "/bin/nvcc", "-V"],
35                                           universal_newlines=True)
36     output = nvcc_output.split()
37     release_idx = output.index("release") + 1
38     nvcc_cuda_version = parse(output[release_idx].split(",")[0])
39     return nvcc_cuda_version
40 
41 
42 # Collect the compute capabilities of all available GPUs.
43 device_count = torch.cuda.device_count()
44 compute_capabilities: Set[int] = set()
45 for i in range(device_count):
46     major, minor = torch.cuda.get_device_capability(i)
47     if major < 7:
48         raise RuntimeError(
49             "GPUs with compute capability less than 7.0 are not supported.")
50     compute_capabilities.add(major * 10 + minor)
51 # If no GPU is available, add all supported compute capabilities.
52 if not compute_capabilities:
53     compute_capabilities = {70, 75, 80, 86, 90}
54 # Add target compute capabilities to NVCC flags.
55 for capability in compute_capabilities:
56     NVCC_FLAGS += ["-gencode", f"arch=compute_{capability},code=sm_{capability}"]
57 
58 # Validate the NVCC CUDA version.
59 nvcc_cuda_version = get_nvcc_cuda_version(CUDA_HOME)
60 if nvcc_cuda_version < Version("11.0"):
61     raise RuntimeError("CUDA 11.0 or higher is required to build the package.")
62 if 86 in compute_capabilities and nvcc_cuda_version < Version("11.1"):
63     raise RuntimeError(
64         "CUDA 11.1 or higher is required for GPUs with compute capability 8.6.")
65 if 90 in compute_capabilities and nvcc_cuda_version < Version("11.8"):
66     raise RuntimeError(
67         "CUDA 11.8 or higher is required for GPUs with compute capability 9.0.")
68 
69 # Use NVCC threads to parallelize the build.
70 if nvcc_cuda_version >= Version("11.2"):
71     num_threads = min(os.cpu_count(), 8)
72     NVCC_FLAGS += ["--threads", str(num_threads)]
73 
74 ext_modules = []
75 
76 # Cache operations.
77 cache_extension = CUDAExtension(
78     name="vllm.cache_ops",
79     sources=["csrc/cache.cpp", "csrc/cache_kernels.cu"],
80     extra_compile_args={"cxx": CXX_FLAGS, "nvcc": NVCC_FLAGS},
81 )
82 ext_modules.append(cache_extension)
83 
84 # Attention kernels.
85 attention_extension = CUDAExtension(
86     name="vllm.attention_ops",
87     sources=["csrc/attention.cpp", "csrc/attention/attention_kernels.cu"],
88     extra_compile_args={"cxx": CXX_FLAGS, "nvcc": NVCC_FLAGS},
89 )
90 ext_modules.append(attention_extension)
91 
92 # Positional encoding kernels.
93 positional_encoding_extension = CUDAExtension(
94     name="vllm.pos_encoding_ops",
95     sources=["csrc/pos_encoding.cpp", "csrc/pos_encoding_kernels.cu"],
96     extra_compile_args={"cxx": CXX_FLAGS, "nvcc": NVCC_FLAGS},
97 )
98 ext_modules.append(positional_encoding_extension)
99 
100 # Layer normalization kernels.
101 layernorm_extension = CUDAExtension(
102     name="vllm.layernorm_ops",
103     sources=["csrc/layernorm.cpp", "csrc/layernorm_kernels.cu"],
104     extra_compile_args={"cxx": CXX_FLAGS, "nvcc": NVCC_FLAGS},
105 )
106 ext_modules.append(layernorm_extension)
107 
108 # Activation kernels.
109 activation_extension = CUDAExtension(
110     name="vllm.activation_ops",
111     sources=["csrc/activation.cpp", "csrc/activation_kernels.cu"],
112     extra_compile_args={"cxx": CXX_FLAGS, "nvcc": NVCC_FLAGS},
113 )
114 ext_modules.append(activation_extension)
115 
116 
117 def get_path(*filepath) -> str:
118     return os.path.join(ROOT_DIR, *filepath)
119 
120 
121 def find_version(filepath: str):
122     """Extract version information from the given filepath.
123 
124     Adapted from https://github.com/ray-project/ray/blob/0b190ee1160eeca9796bc091e07eaebf4c85b511/python/setup.py
125     """
126     with open(filepath) as fp:
127         version_match = re.search(
128             r"^__version__ = ['\"]([^'\"]*)['\"]", fp.read(), re.M)
129         if version_match:
130             return version_match.group(1)
131         raise RuntimeError("Unable to find version string.")
132 
133 
134 def read_readme() -> str:
135     """Read the README file."""
136     return io.open(get_path("README.md"), "r", encoding="utf-8").read()
137 
138 
139 def get_requirements() -> List[str]:
140     """Get Python package dependencies from requirements.txt."""
141     with open(get_path("requirements.txt")) as f:
142         requirements = f.read().strip().split("\n")
143     return requirements
144 
145 
146 setuptools.setup(
147     name="vllm",
148     version=find_version(get_path("vllm", "__init__.py")),
149     author="vLLM Team",
150     author_email="vllm@gmail.com",  # FIXME
151     license="Apache 2.0",
152     description="vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention",  # FIXME
153     long_description=read_readme(),
154     long_description_content_type="text/markdown",
155     url="https://github.com/WoosukKwon/vllm",
156     project_urls={
157         "Homepage": "https://github.com/WoosukKwon/vllm",
158         "Documentation": "https://vllm.readthedocs.io/en/latest/",  # FIXME
159     },
160     classifiers=[
161         "Programming Language :: Python :: 3.8",
162         "Programming Language :: Python :: 3.9",
163         "Programming Language :: Python :: 3.10",
164         "License :: OSI Approved :: Apache Software License",
165         "Topic :: Scientific/Engineering :: Artificial Intelligence",
166     ],
167     packages=setuptools.find_packages(
168         exclude=("benchmarks", "csrc", "docs", "examples", "tests")),
169     python_requires=">=3.8",
170     install_requires=get_requirements(),
171     ext_modules=ext_modules,
172     cmdclass={"build_ext": BuildExtension},
173 )
174
```
--- 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
@@ -165,7 +165,7 @@
         "Topic :: Scientific/Engineering :: Artificial Intelligence",
     ],
     packages=setuptools.find_packages(
-        exclude=("benchmarks", "csrc", "docs", "examples", "tests")),
+        exclude=("assets", "benchmarks", "csrc", "docs", "examples", "tests")),
     python_requires=">=3.8",
     install_requires=get_requirements(),
     ext_modules=ext_modules,

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -165,7 +165,7 @@\n         \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n     ],\n     packages=setuptools.find_packages(\n-        exclude=(\"benchmarks\", \"csrc\", \"docs\", \"examples\", \"tests\")),\n+        exclude=(\"assets\", \"benchmarks\", \"csrc\", \"docs\", \"examples\", \"tests\")),\n     python_requires=\">=3.8\",\n     install_requires=get_requirements(),\n     ext_modules=ext_modules,\n", "issue": "Write README\n\n", "before_files": [{"content": "import io\nimport os\nimport re\nimport subprocess\nfrom typing import List, Set\n\nfrom packaging.version import parse, Version\nimport setuptools\nimport torch\nfrom torch.utils.cpp_extension import BuildExtension, CUDAExtension, CUDA_HOME\n\nROOT_DIR = os.path.dirname(__file__)\n\n# Compiler flags.\nCXX_FLAGS = [\"-g\", \"-O2\", \"-std=c++17\"]\n# TODO(woosuk): Should we use -O3?\nNVCC_FLAGS = [\"-O2\", \"-std=c++17\"]\n\nABI = 1 if torch._C._GLIBCXX_USE_CXX11_ABI else 0\nCXX_FLAGS += [f\"-D_GLIBCXX_USE_CXX11_ABI={ABI}\"]\nNVCC_FLAGS += [f\"-D_GLIBCXX_USE_CXX11_ABI={ABI}\"]\n\nif not torch.cuda.is_available():\n    raise RuntimeError(\n        f\"Cannot find CUDA at CUDA_HOME: {CUDA_HOME}. \"\n        \"CUDA must be available in order to build the package.\")\n\n\ndef get_nvcc_cuda_version(cuda_dir: str) -> Version:\n    \"\"\"Get the CUDA version from nvcc.\n\n    Adapted from https://github.com/NVIDIA/apex/blob/8b7a1ff183741dd8f9b87e7bafd04cfde99cea28/setup.py\n    \"\"\"\n    nvcc_output = subprocess.check_output([cuda_dir + \"/bin/nvcc\", \"-V\"],\n                                          universal_newlines=True)\n    output = nvcc_output.split()\n    release_idx = output.index(\"release\") + 1\n    nvcc_cuda_version = parse(output[release_idx].split(\",\")[0])\n    return nvcc_cuda_version\n\n\n# Collect the compute capabilities of all available GPUs.\ndevice_count = torch.cuda.device_count()\ncompute_capabilities: Set[int] = set()\nfor i in range(device_count):\n    major, minor = torch.cuda.get_device_capability(i)\n    if major < 7:\n        raise RuntimeError(\n            \"GPUs with compute capability less than 7.0 are not supported.\")\n    compute_capabilities.add(major * 10 + minor)\n# If no GPU is available, add all supported compute capabilities.\nif not compute_capabilities:\n    compute_capabilities = {70, 75, 80, 86, 90}\n# Add target compute capabilities to NVCC flags.\nfor capability in compute_capabilities:\n    NVCC_FLAGS += [\"-gencode\", f\"arch=compute_{capability},code=sm_{capability}\"]\n\n# Validate the NVCC CUDA version.\nnvcc_cuda_version = get_nvcc_cuda_version(CUDA_HOME)\nif nvcc_cuda_version < Version(\"11.0\"):\n    raise RuntimeError(\"CUDA 11.0 or higher is required to build the package.\")\nif 86 in compute_capabilities and nvcc_cuda_version < Version(\"11.1\"):\n    raise RuntimeError(\n        \"CUDA 11.1 or higher is required for GPUs with compute capability 8.6.\")\nif 90 in compute_capabilities and nvcc_cuda_version < Version(\"11.8\"):\n    raise RuntimeError(\n        \"CUDA 11.8 or higher is required for GPUs with compute capability 9.0.\")\n\n# Use NVCC threads to parallelize the build.\nif nvcc_cuda_version >= Version(\"11.2\"):\n    num_threads = min(os.cpu_count(), 8)\n    NVCC_FLAGS += [\"--threads\", str(num_threads)]\n\next_modules = []\n\n# Cache operations.\ncache_extension = CUDAExtension(\n    name=\"vllm.cache_ops\",\n    sources=[\"csrc/cache.cpp\", \"csrc/cache_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(cache_extension)\n\n# Attention kernels.\nattention_extension = CUDAExtension(\n    name=\"vllm.attention_ops\",\n    sources=[\"csrc/attention.cpp\", \"csrc/attention/attention_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(attention_extension)\n\n# Positional encoding kernels.\npositional_encoding_extension = CUDAExtension(\n    name=\"vllm.pos_encoding_ops\",\n    sources=[\"csrc/pos_encoding.cpp\", \"csrc/pos_encoding_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(positional_encoding_extension)\n\n# Layer normalization kernels.\nlayernorm_extension = CUDAExtension(\n    name=\"vllm.layernorm_ops\",\n    sources=[\"csrc/layernorm.cpp\", \"csrc/layernorm_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(layernorm_extension)\n\n# Activation kernels.\nactivation_extension = CUDAExtension(\n    name=\"vllm.activation_ops\",\n    sources=[\"csrc/activation.cpp\", \"csrc/activation_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(activation_extension)\n\n\ndef get_path(*filepath) -> str:\n    return os.path.join(ROOT_DIR, *filepath)\n\n\ndef find_version(filepath: str):\n    \"\"\"Extract version information from the given filepath.\n\n    Adapted from https://github.com/ray-project/ray/blob/0b190ee1160eeca9796bc091e07eaebf4c85b511/python/setup.py\n    \"\"\"\n    with open(filepath) as fp:\n        version_match = re.search(\n            r\"^__version__ = ['\\\"]([^'\\\"]*)['\\\"]\", fp.read(), re.M)\n        if version_match:\n            return version_match.group(1)\n        raise RuntimeError(\"Unable to find version string.\")\n\n\ndef read_readme() -> str:\n    \"\"\"Read the README file.\"\"\"\n    return io.open(get_path(\"README.md\"), \"r\", encoding=\"utf-8\").read()\n\n\ndef get_requirements() -> List[str]:\n    \"\"\"Get Python package dependencies from requirements.txt.\"\"\"\n    with open(get_path(\"requirements.txt\")) as f:\n        requirements = f.read().strip().split(\"\\n\")\n    return requirements\n\n\nsetuptools.setup(\n    name=\"vllm\",\n    version=find_version(get_path(\"vllm\", \"__init__.py\")),\n    author=\"vLLM Team\",\n    author_email=\"vllm@gmail.com\",  # FIXME\n    license=\"Apache 2.0\",\n    description=\"vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention\",  # FIXME\n    long_description=read_readme(),\n    long_description_content_type=\"text/markdown\",\n    url=\"https://github.com/WoosukKwon/vllm\",\n    project_urls={\n        \"Homepage\": \"https://github.com/WoosukKwon/vllm\",\n        \"Documentation\": \"https://vllm.readthedocs.io/en/latest/\",  # FIXME\n    },\n    classifiers=[\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n    ],\n    packages=setuptools.find_packages(\n        exclude=(\"benchmarks\", \"csrc\", \"docs\", \"examples\", \"tests\")),\n    python_requires=\">=3.8\",\n    install_requires=get_requirements(),\n    ext_modules=ext_modules,\n    cmdclass={\"build_ext\": BuildExtension},\n)\n", "path": "setup.py"}], "after_files": [{"content": "import io\nimport os\nimport re\nimport subprocess\nfrom typing import List, Set\n\nfrom packaging.version import parse, Version\nimport setuptools\nimport torch\nfrom torch.utils.cpp_extension import BuildExtension, CUDAExtension, CUDA_HOME\n\nROOT_DIR = os.path.dirname(__file__)\n\n# Compiler flags.\nCXX_FLAGS = [\"-g\", \"-O2\", \"-std=c++17\"]\n# TODO(woosuk): Should we use -O3?\nNVCC_FLAGS = [\"-O2\", \"-std=c++17\"]\n\nABI = 1 if torch._C._GLIBCXX_USE_CXX11_ABI else 0\nCXX_FLAGS += [f\"-D_GLIBCXX_USE_CXX11_ABI={ABI}\"]\nNVCC_FLAGS += [f\"-D_GLIBCXX_USE_CXX11_ABI={ABI}\"]\n\nif not torch.cuda.is_available():\n    raise RuntimeError(\n        f\"Cannot find CUDA at CUDA_HOME: {CUDA_HOME}. \"\n        \"CUDA must be available in order to build the package.\")\n\n\ndef get_nvcc_cuda_version(cuda_dir: str) -> Version:\n    \"\"\"Get the CUDA version from nvcc.\n\n    Adapted from https://github.com/NVIDIA/apex/blob/8b7a1ff183741dd8f9b87e7bafd04cfde99cea28/setup.py\n    \"\"\"\n    nvcc_output = subprocess.check_output([cuda_dir + \"/bin/nvcc\", \"-V\"],\n                                          universal_newlines=True)\n    output = nvcc_output.split()\n    release_idx = output.index(\"release\") + 1\n    nvcc_cuda_version = parse(output[release_idx].split(\",\")[0])\n    return nvcc_cuda_version\n\n\n# Collect the compute capabilities of all available GPUs.\ndevice_count = torch.cuda.device_count()\ncompute_capabilities: Set[int] = set()\nfor i in range(device_count):\n    major, minor = torch.cuda.get_device_capability(i)\n    if major < 7:\n        raise RuntimeError(\n            \"GPUs with compute capability less than 7.0 are not supported.\")\n    compute_capabilities.add(major * 10 + minor)\n# If no GPU is available, add all supported compute capabilities.\nif not compute_capabilities:\n    compute_capabilities = {70, 75, 80, 86, 90}\n# Add target compute capabilities to NVCC flags.\nfor capability in compute_capabilities:\n    NVCC_FLAGS += [\"-gencode\", f\"arch=compute_{capability},code=sm_{capability}\"]\n\n# Validate the NVCC CUDA version.\nnvcc_cuda_version = get_nvcc_cuda_version(CUDA_HOME)\nif nvcc_cuda_version < Version(\"11.0\"):\n    raise RuntimeError(\"CUDA 11.0 or higher is required to build the package.\")\nif 86 in compute_capabilities and nvcc_cuda_version < Version(\"11.1\"):\n    raise RuntimeError(\n        \"CUDA 11.1 or higher is required for GPUs with compute capability 8.6.\")\nif 90 in compute_capabilities and nvcc_cuda_version < Version(\"11.8\"):\n    raise RuntimeError(\n        \"CUDA 11.8 or higher is required for GPUs with compute capability 9.0.\")\n\n# Use NVCC threads to parallelize the build.\nif nvcc_cuda_version >= Version(\"11.2\"):\n    num_threads = min(os.cpu_count(), 8)\n    NVCC_FLAGS += [\"--threads\", str(num_threads)]\n\next_modules = []\n\n# Cache operations.\ncache_extension = CUDAExtension(\n    name=\"vllm.cache_ops\",\n    sources=[\"csrc/cache.cpp\", \"csrc/cache_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(cache_extension)\n\n# Attention kernels.\nattention_extension = CUDAExtension(\n    name=\"vllm.attention_ops\",\n    sources=[\"csrc/attention.cpp\", \"csrc/attention/attention_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(attention_extension)\n\n# Positional encoding kernels.\npositional_encoding_extension = CUDAExtension(\n    name=\"vllm.pos_encoding_ops\",\n    sources=[\"csrc/pos_encoding.cpp\", \"csrc/pos_encoding_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(positional_encoding_extension)\n\n# Layer normalization kernels.\nlayernorm_extension = CUDAExtension(\n    name=\"vllm.layernorm_ops\",\n    sources=[\"csrc/layernorm.cpp\", \"csrc/layernorm_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(layernorm_extension)\n\n# Activation kernels.\nactivation_extension = CUDAExtension(\n    name=\"vllm.activation_ops\",\n    sources=[\"csrc/activation.cpp\", \"csrc/activation_kernels.cu\"],\n    extra_compile_args={\"cxx\": CXX_FLAGS, \"nvcc\": NVCC_FLAGS},\n)\next_modules.append(activation_extension)\n\n\ndef get_path(*filepath) -> str:\n    return os.path.join(ROOT_DIR, *filepath)\n\n\ndef find_version(filepath: str):\n    \"\"\"Extract version information from the given filepath.\n\n    Adapted from https://github.com/ray-project/ray/blob/0b190ee1160eeca9796bc091e07eaebf4c85b511/python/setup.py\n    \"\"\"\n    with open(filepath) as fp:\n        version_match = re.search(\n            r\"^__version__ = ['\\\"]([^'\\\"]*)['\\\"]\", fp.read(), re.M)\n        if version_match:\n            return version_match.group(1)\n        raise RuntimeError(\"Unable to find version string.\")\n\n\ndef read_readme() -> str:\n    \"\"\"Read the README file.\"\"\"\n    return io.open(get_path(\"README.md\"), \"r\", encoding=\"utf-8\").read()\n\n\ndef get_requirements() -> List[str]:\n    \"\"\"Get Python package dependencies from requirements.txt.\"\"\"\n    with open(get_path(\"requirements.txt\")) as f:\n        requirements = f.read().strip().split(\"\\n\")\n    return requirements\n\n\nsetuptools.setup(\n    name=\"vllm\",\n    version=find_version(get_path(\"vllm\", \"__init__.py\")),\n    author=\"vLLM Team\",\n    author_email=\"vllm@gmail.com\",  # FIXME\n    license=\"Apache 2.0\",\n    description=\"vLLM: Easy, Fast, and Cheap LLM Serving with PagedAttention\",  # FIXME\n    long_description=read_readme(),\n    long_description_content_type=\"text/markdown\",\n    url=\"https://github.com/WoosukKwon/vllm\",\n    project_urls={\n        \"Homepage\": \"https://github.com/WoosukKwon/vllm\",\n        \"Documentation\": \"https://vllm.readthedocs.io/en/latest/\",  # FIXME\n    },\n    classifiers=[\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n    ],\n    packages=setuptools.find_packages(\n        exclude=(\"assets\", \"benchmarks\", \"csrc\", \"docs\", \"examples\", \"tests\")),\n    python_requires=\">=3.8\",\n    install_requires=get_requirements(),\n    ext_modules=ext_modules,\n    cmdclass={\"build_ext\": BuildExtension},\n)\n", "path": "setup.py"}]}