We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Fresh yt installation not importing
<!--To help us understand and resolve your issue, please fill out the form to
the best of your ability.-->
<!--You can feel free to delete the sections that do not apply.-->

### Bug report

**Bug summary**

yt fails to import on a fresh development installation. The error is that `ModuleNotFoundError: No module named 'yt.utilities.lib.misc_utilities'` Similar to [Issue 2685](https://github.com/yt-project/yt/issues/2685)
<!--A short 1-2 sentences that succinctly describes the bug-->

**Code for reproduction**
Installed using `pip install git+git://github.com/yt-project/yt.git`
<!--A minimum code snippet required to reproduce the bug, also minimizing the
number of dependencies required.-->

<!-- If you need to use a data file to trigger the issue you're having, consider
using one of the datasets from the yt data hub (http://yt-project.org/data). If
your issue cannot be triggered using a public dataset, you can use the yt
curldrop (https://docs.hub.yt/services.html#curldrop) to share data
files. Please include a link to the dataset in the issue if you use the
curldrop.-->

```python
import yt
```

**Actual outcome**

<!--The output produced by the above code, which may be a screenshot, console
output, etc.-->

```
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-2d2292a375dc> in <module>
----> 1 import yt

~/.conda/envs/ytgit/lib/python3.8/site-packages/yt/__init__.py in <module>
     63 )
     64 
---> 65 from yt.fields.api import (
     66     field_plugins,
     67     DerivedField,

~/.conda/envs/ytgit/lib/python3.8/site-packages/yt/fields/api.py in <module>
      1 # from . import species_fields
----> 2 from . import (
      3     angular_momentum,
      4     astro_fields,
      5     cosmology_fields,

~/.conda/envs/ytgit/lib/python3.8/site-packages/yt/fields/angular_momentum.py in <module>
      1 import numpy as np
      2 
----> 3 from yt.utilities.lib.misc_utilities import (
      4     obtain_position_vector,
      5     obtain_relative_velocity_vector,

ModuleNotFoundError: No module named 'yt.utilities.lib.misc_utilities'
```

**Expected outcome**

<!--A description of the expected outcome from the code snippet-->
<!--If this used to work in an earlier version of yt, please note the
version it used to work on-->

**Version Information**
<!--Please specify your platform and versions of the relevant libraries you are
using:-->
  * Operating System: CentOS Linux 7 (Core)x86_64
  * Python Version: 3.8.5
  * yt version: 4.0.dev0
  * Other Libraries (if applicable): N/A

<!--Please tell us how you installed yt and python e.g., from source,
pip, conda. If you installed from conda, please specify which channel you used
if not the default-->

Installed using `pip install git+git://github.com/yt-project/yt.git`


Thanks!

--- 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 glob
2 import os
3 import sys
4 from distutils.ccompiler import get_default_compiler
5 from distutils.version import LooseVersion
6 
7 import pkg_resources
8 from setuptools import find_packages, setup
9 
10 from setupext import (
11     check_for_openmp,
12     check_for_pyembree,
13     create_build_ext,
14     install_ccompiler,
15 )
16 
17 install_ccompiler()
18 
19 try:
20     distribute_ver = LooseVersion(pkg_resources.get_distribution("distribute").version)
21     if distribute_ver < LooseVersion("0.7.3"):
22         print("Distribute is a legacy package obsoleted by setuptools.")
23         print("We strongly recommend that you just uninstall it.")
24         print("If for some reason you cannot do it, you'll need to upgrade it")
25         print("to latest version before proceeding:")
26         print("    pip install -U distribute")
27         sys.exit(1)
28 except pkg_resources.DistributionNotFound:
29     pass  # yay!
30 
31 VERSION = "4.0.dev0"
32 
33 if os.path.exists("MANIFEST"):
34     os.remove("MANIFEST")
35 
36 with open("README.md") as file:
37     long_description = file.read()
38 
39 if check_for_openmp():
40     omp_args = ["-fopenmp"]
41 else:
42     omp_args = []
43 
44 if os.name == "nt":
45     std_libs = []
46 else:
47     std_libs = ["m"]
48 
49 if get_default_compiler() == "msvc":
50     CPP14_FLAG = ["/std:c++14"]
51 else:
52     CPP14_FLAG = ["--std=c++14"]
53 
54 cythonize_aliases = {
55     "LIB_DIR": "yt/utilities/lib/",
56     "LIB_DIR_EWAH": ["yt/utilities/lib/", "yt/utilities/lib/ewahboolarray/"],
57     "LIB_DIR_GEOM": ["yt/utilities/lib/", "yt/geometry/"],
58     "LIB_DIR_GEOM_ARTIO": [
59         "yt/utilities/lib/",
60         "yt/geometry/",
61         "yt/frontends/artio/artio_headers/",
62     ],
63     "STD_LIBS": std_libs,
64     "OMP_ARGS": omp_args,
65     "FIXED_INTERP": "yt/utilities/lib/fixed_interpolator.cpp",
66     "ARTIO_SOURCE": glob.glob("yt/frontends/artio/artio_headers/*.c"),
67     "CPP14_FLAG": CPP14_FLAG,
68 }
69 
70 lib_exts = [
71     "yt/geometry/*.pyx",
72     "yt/utilities/cython_fortran_utils.pyx",
73     "yt/frontends/ramses/io_utils.pyx",
74     "yt/utilities/lib/cykdtree/kdtree.pyx",
75     "yt/utilities/lib/cykdtree/utils.pyx",
76     "yt/frontends/artio/_artio_caller.pyx",
77     "yt/utilities/lib/*.pyx",
78 ]
79 
80 embree_libs, embree_aliases = check_for_pyembree(std_libs)
81 cythonize_aliases.update(embree_aliases)
82 lib_exts += embree_libs
83 
84 # This overrides using lib_exts, so it has to happen after lib_exts is fully defined
85 build_ext, sdist = create_build_ext(lib_exts, cythonize_aliases)
86 
87 if __name__ == "__main__":
88     setup(
89         name="yt",
90         version=VERSION,
91         description="An analysis and visualization toolkit for volumetric data",
92         long_description=long_description,
93         long_description_content_type="text/markdown",
94         classifiers=[
95             "Development Status :: 5 - Production/Stable",
96             "Environment :: Console",
97             "Intended Audience :: Science/Research",
98             "License :: OSI Approved :: BSD License",
99             "Operating System :: MacOS :: MacOS X",
100             "Operating System :: POSIX :: AIX",
101             "Operating System :: POSIX :: Linux",
102             "Programming Language :: C",
103             "Programming Language :: Python :: 3",
104             "Programming Language :: Python :: 3.5",
105             "Programming Language :: Python :: 3.6",
106             "Programming Language :: Python :: 3.7",
107             "Programming Language :: Python :: 3.8",
108             "Topic :: Scientific/Engineering :: Astronomy",
109             "Topic :: Scientific/Engineering :: Physics",
110             "Topic :: Scientific/Engineering :: Visualization",
111             "Framework :: Matplotlib",
112         ],
113         keywords="astronomy astrophysics visualization " + "amr adaptivemeshrefinement",
114         entry_points={
115             "console_scripts": ["yt = yt.utilities.command_line:run_main",],
116             "nose.plugins.0.10": [
117                 "answer-testing = yt.utilities.answer_testing.framework:AnswerTesting"
118             ],
119         },
120         packages=find_packages(),
121         include_package_data=True,
122         install_requires=[
123             "matplotlib>=1.5.3",
124             "setuptools>=19.6",
125             "sympy>=1.2",
126             "numpy>=1.10.4",
127             "IPython>=1.0",
128             "unyt>=2.7.2",
129         ],
130         extras_require={"hub": ["girder_client"], "mapserver": ["bottle"]},
131         cmdclass={"sdist": sdist, "build_ext": build_ext},
132         author="The yt project",
133         author_email="yt-dev@python.org",
134         url="https://github.com/yt-project/yt",
135         project_urls={
136             "Homepage": "https://yt-project.org/",
137             "Documentation": "https://yt-project.org/doc/",
138             "Source": "https://github.com/yt-project/yt/",
139             "Tracker": "https://github.com/yt-project/yt/issues",
140         },
141         license="BSD 3-Clause",
142         zip_safe=False,
143         scripts=["scripts/iyt"],
144         ext_modules=[],  # !!! We override this inside build_ext above
145         python_requires=">=3.6",
146     )
147
```
--- 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
@@ -5,7 +5,7 @@
 from distutils.version import LooseVersion
 
 import pkg_resources
-from setuptools import find_packages, setup
+from setuptools import Distribution, find_packages, setup
 
 from setupext import (
     check_for_openmp,
@@ -84,6 +84,16 @@
 # This overrides using lib_exts, so it has to happen after lib_exts is fully defined
 build_ext, sdist = create_build_ext(lib_exts, cythonize_aliases)
 
+# Force setuptools to consider that there are ext modules, even if empty.
+# See https://github.com/yt-project/yt/issues/2922 and
+# https://stackoverflow.com/a/62668026/2601223 for the fix.
+class BinaryDistribution(Distribution):
+    """Distribution which always forces a binary package with platform name."""
+
+    def has_ext_modules(self):
+        return True
+
+
 if __name__ == "__main__":
     setup(
         name="yt",
@@ -141,6 +151,7 @@
         license="BSD 3-Clause",
         zip_safe=False,
         scripts=["scripts/iyt"],
+        distclass=BinaryDistribution,
         ext_modules=[],  # !!! We override this inside build_ext above
         python_requires=">=3.6",
     )

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -5,7 +5,7 @@\n from distutils.version import LooseVersion\n \n import pkg_resources\n-from setuptools import find_packages, setup\n+from setuptools import Distribution, find_packages, setup\n \n from setupext import (\n     check_for_openmp,\n@@ -84,6 +84,16 @@\n # This overrides using lib_exts, so it has to happen after lib_exts is fully defined\n build_ext, sdist = create_build_ext(lib_exts, cythonize_aliases)\n \n+# Force setuptools to consider that there are ext modules, even if empty.\n+# See https://github.com/yt-project/yt/issues/2922 and\n+# https://stackoverflow.com/a/62668026/2601223 for the fix.\n+class BinaryDistribution(Distribution):\n+    \"\"\"Distribution which always forces a binary package with platform name.\"\"\"\n+\n+    def has_ext_modules(self):\n+        return True\n+\n+\n if __name__ == \"__main__\":\n     setup(\n         name=\"yt\",\n@@ -141,6 +151,7 @@\n         license=\"BSD 3-Clause\",\n         zip_safe=False,\n         scripts=[\"scripts/iyt\"],\n+        distclass=BinaryDistribution,\n         ext_modules=[],  # !!! We override this inside build_ext above\n         python_requires=\">=3.6\",\n     )\n", "issue": "Fresh yt installation not importing\n<!--To help us understand and resolve your issue, please fill out the form to\r\nthe best of your ability.-->\r\n<!--You can feel free to delete the sections that do not apply.-->\r\n\r\n### Bug report\r\n\r\n**Bug summary**\r\n\r\nyt fails to import on a fresh development installation. The error is that `ModuleNotFoundError: No module named 'yt.utilities.lib.misc_utilities'` Similar to [Issue 2685](https://github.com/yt-project/yt/issues/2685)\r\n<!--A short 1-2 sentences that succinctly describes the bug-->\r\n\r\n**Code for reproduction**\r\nInstalled using `pip install git+git://github.com/yt-project/yt.git`\r\n<!--A minimum code snippet required to reproduce the bug, also minimizing the\r\nnumber of dependencies required.-->\r\n\r\n<!-- If you need to use a data file to trigger the issue you're having, consider\r\nusing one of the datasets from the yt data hub (http://yt-project.org/data). If\r\nyour issue cannot be triggered using a public dataset, you can use the yt\r\ncurldrop (https://docs.hub.yt/services.html#curldrop) to share data\r\nfiles. Please include a link to the dataset in the issue if you use the\r\ncurldrop.-->\r\n\r\n```python\r\nimport yt\r\n```\r\n\r\n**Actual outcome**\r\n\r\n<!--The output produced by the above code, which may be a screenshot, console\r\noutput, etc.-->\r\n\r\n```\r\n---------------------------------------------------------------------------\r\nModuleNotFoundError                       Traceback (most recent call last)\r\n<ipython-input-1-2d2292a375dc> in <module>\r\n----> 1 import yt\r\n\r\n~/.conda/envs/ytgit/lib/python3.8/site-packages/yt/__init__.py in <module>\r\n     63 )\r\n     64 \r\n---> 65 from yt.fields.api import (\r\n     66     field_plugins,\r\n     67     DerivedField,\r\n\r\n~/.conda/envs/ytgit/lib/python3.8/site-packages/yt/fields/api.py in <module>\r\n      1 # from . import species_fields\r\n----> 2 from . import (\r\n      3     angular_momentum,\r\n      4     astro_fields,\r\n      5     cosmology_fields,\r\n\r\n~/.conda/envs/ytgit/lib/python3.8/site-packages/yt/fields/angular_momentum.py in <module>\r\n      1 import numpy as np\r\n      2 \r\n----> 3 from yt.utilities.lib.misc_utilities import (\r\n      4     obtain_position_vector,\r\n      5     obtain_relative_velocity_vector,\r\n\r\nModuleNotFoundError: No module named 'yt.utilities.lib.misc_utilities'\r\n```\r\n\r\n**Expected outcome**\r\n\r\n<!--A description of the expected outcome from the code snippet-->\r\n<!--If this used to work in an earlier version of yt, please note the\r\nversion it used to work on-->\r\n\r\n**Version Information**\r\n<!--Please specify your platform and versions of the relevant libraries you are\r\nusing:-->\r\n  * Operating System: CentOS Linux 7 (Core)x86_64\r\n  * Python Version: 3.8.5\r\n  * yt version: 4.0.dev0\r\n  * Other Libraries (if applicable): N/A\r\n\r\n<!--Please tell us how you installed yt and python e.g., from source,\r\npip, conda. If you installed from conda, please specify which channel you used\r\nif not the default-->\r\n\r\nInstalled using `pip install git+git://github.com/yt-project/yt.git`\r\n\r\n\r\nThanks!\n", "before_files": [{"content": "import glob\nimport os\nimport sys\nfrom distutils.ccompiler import get_default_compiler\nfrom distutils.version import LooseVersion\n\nimport pkg_resources\nfrom setuptools import find_packages, setup\n\nfrom setupext import (\n    check_for_openmp,\n    check_for_pyembree,\n    create_build_ext,\n    install_ccompiler,\n)\n\ninstall_ccompiler()\n\ntry:\n    distribute_ver = LooseVersion(pkg_resources.get_distribution(\"distribute\").version)\n    if distribute_ver < LooseVersion(\"0.7.3\"):\n        print(\"Distribute is a legacy package obsoleted by setuptools.\")\n        print(\"We strongly recommend that you just uninstall it.\")\n        print(\"If for some reason you cannot do it, you'll need to upgrade it\")\n        print(\"to latest version before proceeding:\")\n        print(\"    pip install -U distribute\")\n        sys.exit(1)\nexcept pkg_resources.DistributionNotFound:\n    pass  # yay!\n\nVERSION = \"4.0.dev0\"\n\nif os.path.exists(\"MANIFEST\"):\n    os.remove(\"MANIFEST\")\n\nwith open(\"README.md\") as file:\n    long_description = file.read()\n\nif check_for_openmp():\n    omp_args = [\"-fopenmp\"]\nelse:\n    omp_args = []\n\nif os.name == \"nt\":\n    std_libs = []\nelse:\n    std_libs = [\"m\"]\n\nif get_default_compiler() == \"msvc\":\n    CPP14_FLAG = [\"/std:c++14\"]\nelse:\n    CPP14_FLAG = [\"--std=c++14\"]\n\ncythonize_aliases = {\n    \"LIB_DIR\": \"yt/utilities/lib/\",\n    \"LIB_DIR_EWAH\": [\"yt/utilities/lib/\", \"yt/utilities/lib/ewahboolarray/\"],\n    \"LIB_DIR_GEOM\": [\"yt/utilities/lib/\", \"yt/geometry/\"],\n    \"LIB_DIR_GEOM_ARTIO\": [\n        \"yt/utilities/lib/\",\n        \"yt/geometry/\",\n        \"yt/frontends/artio/artio_headers/\",\n    ],\n    \"STD_LIBS\": std_libs,\n    \"OMP_ARGS\": omp_args,\n    \"FIXED_INTERP\": \"yt/utilities/lib/fixed_interpolator.cpp\",\n    \"ARTIO_SOURCE\": glob.glob(\"yt/frontends/artio/artio_headers/*.c\"),\n    \"CPP14_FLAG\": CPP14_FLAG,\n}\n\nlib_exts = [\n    \"yt/geometry/*.pyx\",\n    \"yt/utilities/cython_fortran_utils.pyx\",\n    \"yt/frontends/ramses/io_utils.pyx\",\n    \"yt/utilities/lib/cykdtree/kdtree.pyx\",\n    \"yt/utilities/lib/cykdtree/utils.pyx\",\n    \"yt/frontends/artio/_artio_caller.pyx\",\n    \"yt/utilities/lib/*.pyx\",\n]\n\nembree_libs, embree_aliases = check_for_pyembree(std_libs)\ncythonize_aliases.update(embree_aliases)\nlib_exts += embree_libs\n\n# This overrides using lib_exts, so it has to happen after lib_exts is fully defined\nbuild_ext, sdist = create_build_ext(lib_exts, cythonize_aliases)\n\nif __name__ == \"__main__\":\n    setup(\n        name=\"yt\",\n        version=VERSION,\n        description=\"An analysis and visualization toolkit for volumetric data\",\n        long_description=long_description,\n        long_description_content_type=\"text/markdown\",\n        classifiers=[\n            \"Development Status :: 5 - Production/Stable\",\n            \"Environment :: Console\",\n            \"Intended Audience :: Science/Research\",\n            \"License :: OSI Approved :: BSD License\",\n            \"Operating System :: MacOS :: MacOS X\",\n            \"Operating System :: POSIX :: AIX\",\n            \"Operating System :: POSIX :: Linux\",\n            \"Programming Language :: C\",\n            \"Programming Language :: Python :: 3\",\n            \"Programming Language :: Python :: 3.5\",\n            \"Programming Language :: Python :: 3.6\",\n            \"Programming Language :: Python :: 3.7\",\n            \"Programming Language :: Python :: 3.8\",\n            \"Topic :: Scientific/Engineering :: Astronomy\",\n            \"Topic :: Scientific/Engineering :: Physics\",\n            \"Topic :: Scientific/Engineering :: Visualization\",\n            \"Framework :: Matplotlib\",\n        ],\n        keywords=\"astronomy astrophysics visualization \" + \"amr adaptivemeshrefinement\",\n        entry_points={\n            \"console_scripts\": [\"yt = yt.utilities.command_line:run_main\",],\n            \"nose.plugins.0.10\": [\n                \"answer-testing = yt.utilities.answer_testing.framework:AnswerTesting\"\n            ],\n        },\n        packages=find_packages(),\n        include_package_data=True,\n        install_requires=[\n            \"matplotlib>=1.5.3\",\n            \"setuptools>=19.6\",\n            \"sympy>=1.2\",\n            \"numpy>=1.10.4\",\n            \"IPython>=1.0\",\n            \"unyt>=2.7.2\",\n        ],\n        extras_require={\"hub\": [\"girder_client\"], \"mapserver\": [\"bottle\"]},\n        cmdclass={\"sdist\": sdist, \"build_ext\": build_ext},\n        author=\"The yt project\",\n        author_email=\"yt-dev@python.org\",\n        url=\"https://github.com/yt-project/yt\",\n        project_urls={\n            \"Homepage\": \"https://yt-project.org/\",\n            \"Documentation\": \"https://yt-project.org/doc/\",\n            \"Source\": \"https://github.com/yt-project/yt/\",\n            \"Tracker\": \"https://github.com/yt-project/yt/issues\",\n        },\n        license=\"BSD 3-Clause\",\n        zip_safe=False,\n        scripts=[\"scripts/iyt\"],\n        ext_modules=[],  # !!! We override this inside build_ext above\n        python_requires=\">=3.6\",\n    )\n", "path": "setup.py"}], "after_files": [{"content": "import glob\nimport os\nimport sys\nfrom distutils.ccompiler import get_default_compiler\nfrom distutils.version import LooseVersion\n\nimport pkg_resources\nfrom setuptools import Distribution, find_packages, setup\n\nfrom setupext import (\n    check_for_openmp,\n    check_for_pyembree,\n    create_build_ext,\n    install_ccompiler,\n)\n\ninstall_ccompiler()\n\ntry:\n    distribute_ver = LooseVersion(pkg_resources.get_distribution(\"distribute\").version)\n    if distribute_ver < LooseVersion(\"0.7.3\"):\n        print(\"Distribute is a legacy package obsoleted by setuptools.\")\n        print(\"We strongly recommend that you just uninstall it.\")\n        print(\"If for some reason you cannot do it, you'll need to upgrade it\")\n        print(\"to latest version before proceeding:\")\n        print(\"    pip install -U distribute\")\n        sys.exit(1)\nexcept pkg_resources.DistributionNotFound:\n    pass  # yay!\n\nVERSION = \"4.0.dev0\"\n\nif os.path.exists(\"MANIFEST\"):\n    os.remove(\"MANIFEST\")\n\nwith open(\"README.md\") as file:\n    long_description = file.read()\n\nif check_for_openmp():\n    omp_args = [\"-fopenmp\"]\nelse:\n    omp_args = []\n\nif os.name == \"nt\":\n    std_libs = []\nelse:\n    std_libs = [\"m\"]\n\nif get_default_compiler() == \"msvc\":\n    CPP14_FLAG = [\"/std:c++14\"]\nelse:\n    CPP14_FLAG = [\"--std=c++14\"]\n\ncythonize_aliases = {\n    \"LIB_DIR\": \"yt/utilities/lib/\",\n    \"LIB_DIR_EWAH\": [\"yt/utilities/lib/\", \"yt/utilities/lib/ewahboolarray/\"],\n    \"LIB_DIR_GEOM\": [\"yt/utilities/lib/\", \"yt/geometry/\"],\n    \"LIB_DIR_GEOM_ARTIO\": [\n        \"yt/utilities/lib/\",\n        \"yt/geometry/\",\n        \"yt/frontends/artio/artio_headers/\",\n    ],\n    \"STD_LIBS\": std_libs,\n    \"OMP_ARGS\": omp_args,\n    \"FIXED_INTERP\": \"yt/utilities/lib/fixed_interpolator.cpp\",\n    \"ARTIO_SOURCE\": glob.glob(\"yt/frontends/artio/artio_headers/*.c\"),\n    \"CPP14_FLAG\": CPP14_FLAG,\n}\n\nlib_exts = [\n    \"yt/geometry/*.pyx\",\n    \"yt/utilities/cython_fortran_utils.pyx\",\n    \"yt/frontends/ramses/io_utils.pyx\",\n    \"yt/utilities/lib/cykdtree/kdtree.pyx\",\n    \"yt/utilities/lib/cykdtree/utils.pyx\",\n    \"yt/frontends/artio/_artio_caller.pyx\",\n    \"yt/utilities/lib/*.pyx\",\n]\n\nembree_libs, embree_aliases = check_for_pyembree(std_libs)\ncythonize_aliases.update(embree_aliases)\nlib_exts += embree_libs\n\n# This overrides using lib_exts, so it has to happen after lib_exts is fully defined\nbuild_ext, sdist = create_build_ext(lib_exts, cythonize_aliases)\n\n# Force setuptools to consider that there are ext modules, even if empty.\n# See https://github.com/yt-project/yt/issues/2922 and\n# https://stackoverflow.com/a/62668026/2601223 for the fix.\nclass BinaryDistribution(Distribution):\n    \"\"\"Distribution which always forces a binary package with platform name.\"\"\"\n\n    def has_ext_modules(self):\n        return True\n\n\nif __name__ == \"__main__\":\n    setup(\n        name=\"yt\",\n        version=VERSION,\n        description=\"An analysis and visualization toolkit for volumetric data\",\n        long_description=long_description,\n        long_description_content_type=\"text/markdown\",\n        classifiers=[\n            \"Development Status :: 5 - Production/Stable\",\n            \"Environment :: Console\",\n            \"Intended Audience :: Science/Research\",\n            \"License :: OSI Approved :: BSD License\",\n            \"Operating System :: MacOS :: MacOS X\",\n            \"Operating System :: POSIX :: AIX\",\n            \"Operating System :: POSIX :: Linux\",\n            \"Programming Language :: C\",\n            \"Programming Language :: Python :: 3\",\n            \"Programming Language :: Python :: 3.5\",\n            \"Programming Language :: Python :: 3.6\",\n            \"Programming Language :: Python :: 3.7\",\n            \"Programming Language :: Python :: 3.8\",\n            \"Topic :: Scientific/Engineering :: Astronomy\",\n            \"Topic :: Scientific/Engineering :: Physics\",\n            \"Topic :: Scientific/Engineering :: Visualization\",\n            \"Framework :: Matplotlib\",\n        ],\n        keywords=\"astronomy astrophysics visualization \" + \"amr adaptivemeshrefinement\",\n        entry_points={\n            \"console_scripts\": [\"yt = yt.utilities.command_line:run_main\",],\n            \"nose.plugins.0.10\": [\n                \"answer-testing = yt.utilities.answer_testing.framework:AnswerTesting\"\n            ],\n        },\n        packages=find_packages(),\n        include_package_data=True,\n        install_requires=[\n            \"matplotlib>=1.5.3\",\n            \"setuptools>=19.6\",\n            \"sympy>=1.2\",\n            \"numpy>=1.10.4\",\n            \"IPython>=1.0\",\n            \"unyt>=2.7.2\",\n        ],\n        extras_require={\"hub\": [\"girder_client\"], \"mapserver\": [\"bottle\"]},\n        cmdclass={\"sdist\": sdist, \"build_ext\": build_ext},\n        author=\"The yt project\",\n        author_email=\"yt-dev@python.org\",\n        url=\"https://github.com/yt-project/yt\",\n        project_urls={\n            \"Homepage\": \"https://yt-project.org/\",\n            \"Documentation\": \"https://yt-project.org/doc/\",\n            \"Source\": \"https://github.com/yt-project/yt/\",\n            \"Tracker\": \"https://github.com/yt-project/yt/issues\",\n        },\n        license=\"BSD 3-Clause\",\n        zip_safe=False,\n        scripts=[\"scripts/iyt\"],\n        distclass=BinaryDistribution,\n        ext_modules=[],  # !!! We override this inside build_ext above\n        python_requires=\">=3.6\",\n    )\n", "path": "setup.py"}]}