We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Thoughts on adding git rev to dev version numbers?
How would everyone feel about adding `git rev-parse --short HEAD` to `__version__`?  Currently it is `2.0.0.dev0` and I'm not sure what the final `0` is for, but I'm guessing it's to manually increment as one feels like?  What if instead it were `2.0.0.dev-d379318e`?  I'd propose that we build the file on the fly in `setup.py` but only add the git rev when the non-suffixed version (stored as a variable in `setup.py`) includes `dev`.

I can take a stab at this if people are onboard.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/cocotb/_version.py`
Content:
```
1 # Package versioning solution originally found here:
2 # http://stackoverflow.com/q/458550
3 
4 # Store the version here so:
5 # 1) we don't load dependencies by storing it in __init__.py
6 # 2) we can import it in setup.py for the same reason
7 # 3) we can import it into your module
8 __version__ = "2.0.0.dev0"
9
```

Path: `setup.py`
Content:
```
1 #!/usr/bin/env python
2 ###############################################################################
3 # Copyright (c) 2013 Potential Ventures Ltd
4 # Copyright (c) 2013 SolarFlare Communications Inc
5 # All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions are met:
9 #     * Redistributions of source code must retain the above copyright
10 #       notice, this list of conditions and the following disclaimer.
11 #     * Redistributions in binary form must reproduce the above copyright
12 #       notice, this list of conditions and the following disclaimer in the
13 #       documentation and/or other materials provided with the distribution.
14 #     * Neither the name of Potential Ventures Ltd,
15 #       SolarFlare Communications Inc nor the
16 #       names of its contributors may be used to endorse or promote products
17 #       derived from this software without specific prior written permission.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 # DISCLAIMED. IN NO EVENT SHALL POTENTIAL VENTURES LTD BE LIABLE FOR ANY
23 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 ###############################################################################
30 
31 import sys
32 
33 if sys.version_info[:2] < (3, 6):  # noqa: UP036 | bug in ruff
34     msg = [
35         "This version of cocotb requires at least Python 3.6,",
36         "you are running Python %d.%d.%d."
37         % (sys.version_info[0], sys.version_info[1], sys.version_info[2]),
38     ]
39     msg += [
40         "For more information please refer to the documentation at ",
41         "https://cocotb.readthedocs.io.",
42     ]
43 
44     raise SystemExit("\n".join(msg))
45 
46 import logging
47 from io import StringIO
48 from os import path, walk
49 
50 from setuptools import find_packages, setup
51 
52 # Note: cocotb is not installed properly yet and is missing dependencies and binaries
53 # We can still import other files next to setup.py, as long as they're in MANIFEST.in
54 # The below line is necessary for PEP517 support
55 sys.path.append(path.dirname(__file__))
56 from cocotb_build_libs import build_ext, get_ext  # noqa: E402
57 
58 
59 def read_file(fname):
60     with open(path.join(path.dirname(__file__), fname), encoding="utf8") as f:
61         return f.read()
62 
63 
64 def package_files(directory):
65     paths = []
66     for fpath, directories, filenames in walk(directory):
67         for filename in filenames:
68             paths.append(path.join("..", "..", fpath, filename))
69     return paths
70 
71 
72 # this sets the __version__ variable
73 exec(read_file(path.join("src", "cocotb", "_version.py")))
74 
75 # store log from build_libs and display at the end in verbose mode
76 # see https://github.com/pypa/pip/issues/6634
77 log_stream = StringIO()
78 handler = logging.StreamHandler(log_stream)
79 log = logging.getLogger("cocotb._build_libs")
80 log.setLevel(logging.INFO)
81 log.addHandler(handler)
82 
83 setup(
84     name="cocotb",
85     cmdclass={"build_ext": build_ext},
86     version=__version__,  # noqa: F821
87     description="cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.",
88     url="https://www.cocotb.org",
89     license="BSD",
90     long_description=read_file("README.md"),
91     long_description_content_type="text/markdown",
92     author="Chris Higgs, Stuart Hodgson",
93     maintainer="cocotb contributors",
94     maintainer_email="cocotb@lists.librecores.org",
95     install_requires=[
96         "find_libpython",
97     ],
98     python_requires=">=3.6",
99     packages=find_packages(where="src"),
100     package_dir={"": "src"},
101     package_data={
102         "cocotb": (
103             package_files("src/cocotb/share/makefiles")
104             + package_files("src/cocotb/share/include")  # noqa: W504
105             + package_files("src/cocotb/share/def")  # noqa: W504
106             + package_files("src/cocotb/share/lib/verilator")  # noqa: W504
107         )
108     },
109     ext_modules=get_ext(),
110     entry_points={
111         "console_scripts": [
112             "cocotb-config=cocotb.config:main",
113         ]
114     },
115     platforms="any",
116     classifiers=[
117         "Programming Language :: Python :: 3",
118         "Programming Language :: Python :: 3.6",
119         "Programming Language :: Python :: 3.7",
120         "Programming Language :: Python :: 3.8",
121         "Programming Language :: Python :: 3.9",
122         "Programming Language :: Python :: 3.10",
123         "Programming Language :: Python :: 3.11",
124         "License :: OSI Approved :: BSD License",
125         "Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)",
126         "Framework :: cocotb",
127     ],
128     # these appear in the sidebar on PyPI
129     project_urls={
130         "Bug Tracker": "https://github.com/cocotb/cocotb/issues",
131         "Source Code": "https://github.com/cocotb/cocotb",
132         "Documentation": "https://docs.cocotb.org",
133     },
134 )
135 
136 print(log_stream.getvalue())
137
```
--- 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
@@ -44,6 +44,7 @@
     raise SystemExit("\n".join(msg))
 
 import logging
+import subprocess
 from io import StringIO
 from os import path, walk
 
@@ -69,8 +70,26 @@
     return paths
 
 
-# this sets the __version__ variable
-exec(read_file(path.join("src", "cocotb", "_version.py")))
+version_file_path = path.join("src", "cocotb", "_version.py")
+__version__ = "2.0.0.dev0"
+if "dev" in __version__:
+    try:
+        rev = subprocess.check_output(
+            ["git", "rev-parse", "--short", "HEAD"], universal_newlines=True
+        ).strip()
+        __version__ += f"+{rev}"
+    except Exception as e:
+        # if this is not a git repository and _version.py already exists,
+        # we are probably installing from an sdist, so use the existing _version.py
+        if path.exists(version_file_path):
+            exec(read_file(version_file_path))
+        else:
+            print(e, file=sys.stderr)
+with open(version_file_path, "w") as f:
+    f.write("# Package version\n")
+    f.write("# Generated by setup.py -- do not modify directly\n\n")
+    f.write(f'__version__ = "{__version__}"')
+
 
 # store log from build_libs and display at the end in verbose mode
 # see https://github.com/pypa/pip/issues/6634
@@ -83,7 +102,7 @@
 setup(
     name="cocotb",
     cmdclass={"build_ext": build_ext},
-    version=__version__,  # noqa: F821
+    version=__version__,
     description="cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.",
     url="https://www.cocotb.org",
     license="BSD",
diff --git a/src/cocotb/_version.py b/src/cocotb/_version.py
deleted file mode 100644
--- a/src/cocotb/_version.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# Package versioning solution originally found here:
-# http://stackoverflow.com/q/458550
-
-# Store the version here so:
-# 1) we don't load dependencies by storing it in __init__.py
-# 2) we can import it in setup.py for the same reason
-# 3) we can import it into your module
-__version__ = "2.0.0.dev0"

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -44,6 +44,7 @@\n     raise SystemExit(\"\\n\".join(msg))\n \n import logging\n+import subprocess\n from io import StringIO\n from os import path, walk\n \n@@ -69,8 +70,26 @@\n     return paths\n \n \n-# this sets the __version__ variable\n-exec(read_file(path.join(\"src\", \"cocotb\", \"_version.py\")))\n+version_file_path = path.join(\"src\", \"cocotb\", \"_version.py\")\n+__version__ = \"2.0.0.dev0\"\n+if \"dev\" in __version__:\n+    try:\n+        rev = subprocess.check_output(\n+            [\"git\", \"rev-parse\", \"--short\", \"HEAD\"], universal_newlines=True\n+        ).strip()\n+        __version__ += f\"+{rev}\"\n+    except Exception as e:\n+        # if this is not a git repository and _version.py already exists,\n+        # we are probably installing from an sdist, so use the existing _version.py\n+        if path.exists(version_file_path):\n+            exec(read_file(version_file_path))\n+        else:\n+            print(e, file=sys.stderr)\n+with open(version_file_path, \"w\") as f:\n+    f.write(\"# Package version\\n\")\n+    f.write(\"# Generated by setup.py -- do not modify directly\\n\\n\")\n+    f.write(f'__version__ = \"{__version__}\"')\n+\n \n # store log from build_libs and display at the end in verbose mode\n # see https://github.com/pypa/pip/issues/6634\n@@ -83,7 +102,7 @@\n setup(\n     name=\"cocotb\",\n     cmdclass={\"build_ext\": build_ext},\n-    version=__version__,  # noqa: F821\n+    version=__version__,\n     description=\"cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.\",\n     url=\"https://www.cocotb.org\",\n     license=\"BSD\",\ndiff --git a/src/cocotb/_version.py b/src/cocotb/_version.py\ndeleted file mode 100644\n--- a/src/cocotb/_version.py\n+++ /dev/null\n@@ -1,8 +0,0 @@\n-# Package versioning solution originally found here:\n-# http://stackoverflow.com/q/458550\n-\n-# Store the version here so:\n-# 1) we don't load dependencies by storing it in __init__.py\n-# 2) we can import it in setup.py for the same reason\n-# 3) we can import it into your module\n-__version__ = \"2.0.0.dev0\"\n", "issue": "Thoughts on adding git rev to dev version numbers?\nHow would everyone feel about adding `git rev-parse --short HEAD` to `__version__`?  Currently it is `2.0.0.dev0` and I'm not sure what the final `0` is for, but I'm guessing it's to manually increment as one feels like?  What if instead it were `2.0.0.dev-d379318e`?  I'd propose that we build the file on the fly in `setup.py` but only add the git rev when the non-suffixed version (stored as a variable in `setup.py`) includes `dev`.\r\n\r\nI can take a stab at this if people are onboard.\n", "before_files": [{"content": "# Package versioning solution originally found here:\n# http://stackoverflow.com/q/458550\n\n# Store the version here so:\n# 1) we don't load dependencies by storing it in __init__.py\n# 2) we can import it in setup.py for the same reason\n# 3) we can import it into your module\n__version__ = \"2.0.0.dev0\"\n", "path": "src/cocotb/_version.py"}, {"content": "#!/usr/bin/env python\n###############################################################################\n# Copyright (c) 2013 Potential Ventures Ltd\n# Copyright (c) 2013 SolarFlare Communications Inc\n# All rights reserved.\n#\n# Redistribution and use in source and binary forms, with or without\n# modification, are permitted provided that the following conditions are met:\n#     * Redistributions of source code must retain the above copyright\n#       notice, this list of conditions and the following disclaimer.\n#     * Redistributions in binary form must reproduce the above copyright\n#       notice, this list of conditions and the following disclaimer in the\n#       documentation and/or other materials provided with the distribution.\n#     * Neither the name of Potential Ventures Ltd,\n#       SolarFlare Communications Inc nor the\n#       names of its contributors may be used to endorse or promote products\n#       derived from this software without specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n# DISCLAIMED. IN NO EVENT SHALL POTENTIAL VENTURES LTD BE LIABLE FOR ANY\n# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n###############################################################################\n\nimport sys\n\nif sys.version_info[:2] < (3, 6):  # noqa: UP036 | bug in ruff\n    msg = [\n        \"This version of cocotb requires at least Python 3.6,\",\n        \"you are running Python %d.%d.%d.\"\n        % (sys.version_info[0], sys.version_info[1], sys.version_info[2]),\n    ]\n    msg += [\n        \"For more information please refer to the documentation at \",\n        \"https://cocotb.readthedocs.io.\",\n    ]\n\n    raise SystemExit(\"\\n\".join(msg))\n\nimport logging\nfrom io import StringIO\nfrom os import path, walk\n\nfrom setuptools import find_packages, setup\n\n# Note: cocotb is not installed properly yet and is missing dependencies and binaries\n# We can still import other files next to setup.py, as long as they're in MANIFEST.in\n# The below line is necessary for PEP517 support\nsys.path.append(path.dirname(__file__))\nfrom cocotb_build_libs import build_ext, get_ext  # noqa: E402\n\n\ndef read_file(fname):\n    with open(path.join(path.dirname(__file__), fname), encoding=\"utf8\") as f:\n        return f.read()\n\n\ndef package_files(directory):\n    paths = []\n    for fpath, directories, filenames in walk(directory):\n        for filename in filenames:\n            paths.append(path.join(\"..\", \"..\", fpath, filename))\n    return paths\n\n\n# this sets the __version__ variable\nexec(read_file(path.join(\"src\", \"cocotb\", \"_version.py\")))\n\n# store log from build_libs and display at the end in verbose mode\n# see https://github.com/pypa/pip/issues/6634\nlog_stream = StringIO()\nhandler = logging.StreamHandler(log_stream)\nlog = logging.getLogger(\"cocotb._build_libs\")\nlog.setLevel(logging.INFO)\nlog.addHandler(handler)\n\nsetup(\n    name=\"cocotb\",\n    cmdclass={\"build_ext\": build_ext},\n    version=__version__,  # noqa: F821\n    description=\"cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.\",\n    url=\"https://www.cocotb.org\",\n    license=\"BSD\",\n    long_description=read_file(\"README.md\"),\n    long_description_content_type=\"text/markdown\",\n    author=\"Chris Higgs, Stuart Hodgson\",\n    maintainer=\"cocotb contributors\",\n    maintainer_email=\"cocotb@lists.librecores.org\",\n    install_requires=[\n        \"find_libpython\",\n    ],\n    python_requires=\">=3.6\",\n    packages=find_packages(where=\"src\"),\n    package_dir={\"\": \"src\"},\n    package_data={\n        \"cocotb\": (\n            package_files(\"src/cocotb/share/makefiles\")\n            + package_files(\"src/cocotb/share/include\")  # noqa: W504\n            + package_files(\"src/cocotb/share/def\")  # noqa: W504\n            + package_files(\"src/cocotb/share/lib/verilator\")  # noqa: W504\n        )\n    },\n    ext_modules=get_ext(),\n    entry_points={\n        \"console_scripts\": [\n            \"cocotb-config=cocotb.config:main\",\n        ]\n    },\n    platforms=\"any\",\n    classifiers=[\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)\",\n        \"Framework :: cocotb\",\n    ],\n    # these appear in the sidebar on PyPI\n    project_urls={\n        \"Bug Tracker\": \"https://github.com/cocotb/cocotb/issues\",\n        \"Source Code\": \"https://github.com/cocotb/cocotb\",\n        \"Documentation\": \"https://docs.cocotb.org\",\n    },\n)\n\nprint(log_stream.getvalue())\n", "path": "setup.py"}], "after_files": [{"content": null, "path": "src/cocotb/_version.py"}, {"content": "#!/usr/bin/env python\n###############################################################################\n# Copyright (c) 2013 Potential Ventures Ltd\n# Copyright (c) 2013 SolarFlare Communications Inc\n# All rights reserved.\n#\n# Redistribution and use in source and binary forms, with or without\n# modification, are permitted provided that the following conditions are met:\n#     * Redistributions of source code must retain the above copyright\n#       notice, this list of conditions and the following disclaimer.\n#     * Redistributions in binary form must reproduce the above copyright\n#       notice, this list of conditions and the following disclaimer in the\n#       documentation and/or other materials provided with the distribution.\n#     * Neither the name of Potential Ventures Ltd,\n#       SolarFlare Communications Inc nor the\n#       names of its contributors may be used to endorse or promote products\n#       derived from this software without specific prior written permission.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n# DISCLAIMED. IN NO EVENT SHALL POTENTIAL VENTURES LTD BE LIABLE FOR ANY\n# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n###############################################################################\n\nimport sys\n\nif sys.version_info[:2] < (3, 6):  # noqa: UP036 | bug in ruff\n    msg = [\n        \"This version of cocotb requires at least Python 3.6,\",\n        \"you are running Python %d.%d.%d.\"\n        % (sys.version_info[0], sys.version_info[1], sys.version_info[2]),\n    ]\n    msg += [\n        \"For more information please refer to the documentation at \",\n        \"https://cocotb.readthedocs.io.\",\n    ]\n\n    raise SystemExit(\"\\n\".join(msg))\n\nimport logging\nimport subprocess\nfrom io import StringIO\nfrom os import path, walk\n\nfrom setuptools import find_packages, setup\n\n# Note: cocotb is not installed properly yet and is missing dependencies and binaries\n# We can still import other files next to setup.py, as long as they're in MANIFEST.in\n# The below line is necessary for PEP517 support\nsys.path.append(path.dirname(__file__))\nfrom cocotb_build_libs import build_ext, get_ext  # noqa: E402\n\n\ndef read_file(fname):\n    with open(path.join(path.dirname(__file__), fname), encoding=\"utf8\") as f:\n        return f.read()\n\n\ndef package_files(directory):\n    paths = []\n    for fpath, directories, filenames in walk(directory):\n        for filename in filenames:\n            paths.append(path.join(\"..\", \"..\", fpath, filename))\n    return paths\n\n\nversion_file_path = path.join(\"src\", \"cocotb\", \"_version.py\")\n__version__ = \"2.0.0.dev0\"\nif \"dev\" in __version__:\n    try:\n        rev = subprocess.check_output(\n            [\"git\", \"rev-parse\", \"--short\", \"HEAD\"], universal_newlines=True\n        ).strip()\n        __version__ += f\"+{rev}\"\n    except Exception as e:\n        # if this is not a git repository and _version.py already exists,\n        # we are probably installing from an sdist, so use the existing _version.py\n        if path.exists(version_file_path):\n            exec(read_file(version_file_path))\n        else:\n            print(e, file=sys.stderr)\nwith open(version_file_path, \"w\") as f:\n    f.write(\"# Package version\\n\")\n    f.write(\"# Generated by setup.py -- do not modify directly\\n\\n\")\n    f.write(f'__version__ = \"{__version__}\"')\n\n\n# store log from build_libs and display at the end in verbose mode\n# see https://github.com/pypa/pip/issues/6634\nlog_stream = StringIO()\nhandler = logging.StreamHandler(log_stream)\nlog = logging.getLogger(\"cocotb._build_libs\")\nlog.setLevel(logging.INFO)\nlog.addHandler(handler)\n\nsetup(\n    name=\"cocotb\",\n    cmdclass={\"build_ext\": build_ext},\n    version=__version__,\n    description=\"cocotb is a coroutine based cosimulation library for writing VHDL and Verilog testbenches in Python.\",\n    url=\"https://www.cocotb.org\",\n    license=\"BSD\",\n    long_description=read_file(\"README.md\"),\n    long_description_content_type=\"text/markdown\",\n    author=\"Chris Higgs, Stuart Hodgson\",\n    maintainer=\"cocotb contributors\",\n    maintainer_email=\"cocotb@lists.librecores.org\",\n    install_requires=[\n        \"find_libpython\",\n    ],\n    python_requires=\">=3.6\",\n    packages=find_packages(where=\"src\"),\n    package_dir={\"\": \"src\"},\n    package_data={\n        \"cocotb\": (\n            package_files(\"src/cocotb/share/makefiles\")\n            + package_files(\"src/cocotb/share/include\")  # noqa: W504\n            + package_files(\"src/cocotb/share/def\")  # noqa: W504\n            + package_files(\"src/cocotb/share/lib/verilator\")  # noqa: W504\n        )\n    },\n    ext_modules=get_ext(),\n    entry_points={\n        \"console_scripts\": [\n            \"cocotb-config=cocotb.config:main\",\n        ]\n    },\n    platforms=\"any\",\n    classifiers=[\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)\",\n        \"Framework :: cocotb\",\n    ],\n    # these appear in the sidebar on PyPI\n    project_urls={\n        \"Bug Tracker\": \"https://github.com/cocotb/cocotb/issues\",\n        \"Source Code\": \"https://github.com/cocotb/cocotb\",\n        \"Documentation\": \"https://docs.cocotb.org\",\n    },\n)\n\nprint(log_stream.getvalue())\n", "path": "setup.py"}]}