diff --git a/pyproject.toml b/pyproject.toml
index 0fff621dc7deef20d099509a0f6beeb587edb708..deb407edb4d3eec7799aa3e3de939a010e068bf6 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -10,10 +10,10 @@ version = "2024.1.6"
 description = "A collection of tools for Python"
 readme = "README.rst"
 license = { text = "MIT" }
-requires-python = "~=3.8"
 authors = [
     { name = "Andreas Kloeckner", email = "inform@tiker.net" },
 ]
+requires-python = ">=3.8"
 classifiers = [
     "Development Status :: 4 - Beta",
     "Intended Audience :: Developers",
@@ -22,7 +22,7 @@ classifiers = [
     "License :: OSI Approved :: MIT License",
     "Natural Language :: English",
     "Programming Language :: Python",
-    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3 :: Only",
     "Topic :: Scientific/Engineering",
     "Topic :: Scientific/Engineering :: Information Analysis",
     "Topic :: Scientific/Engineering :: Mathematics",
@@ -31,15 +31,14 @@ classifiers = [
     "Topic :: Utilities",
 ]
 dependencies = [
-    "platformdirs>=2.2.0",
-    "typing_extensions>=4.0; python_version<'3.11'",
+    "platformdirs>=2.2",
+    "typing-extensions>=4; python_version<'3.11'",
 ]
 
 [project.optional-dependencies]
 numpy = [
-    "numpy>=1.6.0",
+    "numpy>=1.6",
 ]
-
 test = [
     "mypy",
     "pytest",
@@ -47,8 +46,17 @@ test = [
 ]
 
 [project.urls]
-Homepage = "https://github.com/inducer/pytools/"
 Documentation = "https://documen.tician.de/pytools/"
+Homepage = "https://github.com/inducer/pytools/"
+
+[tool.setuptools.packages.find]
+include = [
+    "pytools*",
+]
+
+[tool.setuptools.package-dir]
+# https://github.com/Infleqtion/client-superstaq/pull/715
+"" = "."
 
 [tool.setuptools.package-data]
 pytools = [
@@ -57,8 +65,8 @@ pytools = [
 
 [tool.ruff]
 target-version = "py38"
-
 preview = true
+
 [tool.ruff.lint]
 extend-select = [
     "B",   # flake8-bugbear
@@ -77,6 +85,7 @@ extend-ignore = [
     "E226", # missing whitespace around arithmetic operator
     "E402", # module-level import not at top of file
 ]
+
 [tool.ruff.lint.flake8-quotes]
 docstring-quotes = "double"
 inline-quotes = "double"
@@ -84,7 +93,6 @@ multiline-quotes = "double"
 
 [tool.ruff.lint.isort]
 combine-as-imports = true
-
 known-local-folder = [
     "pytools",
 ]
@@ -93,4 +101,3 @@ lines-after-imports = 2
 [tool.mypy]
 ignore_missing_imports = true
 warn_unused_ignores = true
-