guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/222: build-system/pyproject: Use python-sans-pip-wrapper as default-p


From: guix-commits
Subject: 05/222: build-system/pyproject: Use python-sans-pip-wrapper as default-python.
Date: Fri, 1 Nov 2024 10:56:12 -0400 (EDT)

sharlatan pushed a commit to branch python-team
in repository guix.

commit 1a9dc619dde243b46940f0a09b24793e8b2615b9
Author: Lars-Dominik Braun <lars@6xq.net>
AuthorDate: Thu May 11 08:33:02 2023 +0200

    build-system/pyproject: Use python-sans-pip-wrapper as default-python.
    
    Also adds python-setuptools and python-wheel to relevant packages,
    either to native-inputs or to propagated inputs if the pkg_resources
    Python module is loaded at runtime.
    
    * guix/build-system/pyproject.scm (default-python): Default to
    python-sans-pip-wrapper.
    
    Change-Id: I2d986c2225114f54459dd6bb360913106e52cdf4
---
 gnu/packages/admin.scm              |  13 +-
 gnu/packages/bioinformatics.scm     |  90 +++++++++---
 gnu/packages/bootloaders.scm        |   3 +
 gnu/packages/check.scm              |   9 +-
 gnu/packages/databases.scm          |  12 +-
 gnu/packages/digest.scm             |   5 +-
 gnu/packages/engineering.scm        |  11 +-
 gnu/packages/fontutils.scm          |  19 ++-
 gnu/packages/geo.scm                |  10 +-
 gnu/packages/graph.scm              |  13 +-
 gnu/packages/graphviz.scm           |   4 +-
 gnu/packages/license.scm            |  17 ++-
 gnu/packages/machine-learning.scm   |  28 ++--
 gnu/packages/monitoring.scm         |   5 +-
 gnu/packages/package-management.scm |   9 +-
 gnu/packages/potassco.scm           |   9 +-
 gnu/packages/protobuf.scm           |   4 +-
 gnu/packages/python-build.scm       |   3 +-
 gnu/packages/python-check.scm       |  43 ++++--
 gnu/packages/python-compression.scm |  28 ++--
 gnu/packages/python-crypto.scm      |  25 +++-
 gnu/packages/python-science.scm     |  22 ++-
 gnu/packages/python-web.scm         |  63 ++++++---
 gnu/packages/python-xyz.scm         | 273 ++++++++++++++++++++++++------------
 gnu/packages/qt.scm                 |   4 +-
 gnu/packages/rpc.scm                |   2 +-
 gnu/packages/serialization.scm      |   4 +-
 gnu/packages/sphinx.scm             |   4 +-
 gnu/packages/statistics.scm         |  14 +-
 gnu/packages/terminals.scm          |   5 +-
 gnu/packages/time.scm               |   3 +-
 gnu/packages/tor.scm                |   4 +-
 gnu/packages/tree-sitter.scm        |   4 +-
 gnu/packages/video.scm              |   2 +-
 gnu/packages/vim.scm                |   8 +-
 guix/build-system/pyproject.scm     |   7 +-
 36 files changed, 555 insertions(+), 224 deletions(-)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 86f35d49ad..9f6c02508e 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -5010,10 +5010,17 @@ elogind's uaccess feature.")
                ;; XXX Guix's America/Los_Angeles time zone is somehow broken.
                (add-before 'check 'hack-time-zone
                  (lambda _
-                   (setenv "TZ" "PST8PDT"))))))
-    (native-inputs (list python-pytest))
+                   (setenv "TZ" "PST8PDT")
+                   (substitute* (find-files "tests" "^test.*\\.py$")
+                     (("America/Los_Angeles") "PST8PDT")))))))
+    (native-inputs
+     (list python-pytest
+           python-setuptools
+           python-wheel))
     (propagated-inputs
-     (list python-pygments python-ruamel.yaml python-xmltodict))
+     (list python-pygments
+           python-ruamel.yaml
+           python-xmltodict))
     (home-page "https://github.com/kellyjonbrazil/jc";)
     (synopsis "Convert the output of command-line tools to JSON")
     (description "@code{jc} JSONifies the output of many CLI tools and
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 3c1c180b7c..599a734a2b 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1885,8 +1885,13 @@ intended to behave exactly the same as the original BWK 
awk.")
                (base32
                 "1pm1szyxabhn8jismrj9cjhf88ajgcmm39f0cgf36iagw5qakprl"))))
     (build-system pyproject-build-system)
-    (propagated-inputs (list python-biopython python-six))
-    (native-inputs (list python-pytest))
+    (native-inputs
+     (list python-pytest))
+    (propagated-inputs
+     (list python-biopython
+           python-setuptools
+           python-six
+           python-wheel))
     (home-page "https://github.com/chapmanb/bcbb/tree/master/gff";)
     (synopsis "Read and write GFF files with Biopython integration")
     (description
@@ -2010,7 +2015,7 @@ from bokeh.util.dataclasses import entries\n"))
                                python-tornado-6
                                python-tqdm
                                python-umap-learn))
-      (native-inputs (list python-pytest))
+      (native-inputs (list python-pytest python-setuptools python-wheel))
       (home-page "https://github.com/LooseLab/bulkVis";)
       (synopsis "Interactive visualization of bulk RNA-seq data")
       (description
@@ -2341,7 +2346,11 @@ biological activities from omics data within a unified 
framework.")
            python-scikit-learn
            python-scipy
            python-seaborn))
-    (native-inputs (list python-cython python-setuptools-scm))
+    (native-inputs
+     (list python-cython
+           python-setuptools
+           python-setuptools-scm
+           python-wheel))
     (home-page "https://github.com/lilab-bcb/demuxEM";)
     (synopsis "Analyze cell-hashing/nucleus-hashing data")
     (description
@@ -2414,6 +2423,7 @@ from single-cell RNA-sequencing.")
            python-numpy
            python-pandas
            python-scipy))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/SegataLab/hclust2/";)
     (synopsis "Plotting heat-maps for publications")
     (description
@@ -2433,7 +2443,7 @@ to produce high quality figures that can be used in 
publications.")
               "111q4pzkav26aa3hkgh948wqlyrq7dq6sjml9z63n3blw8s6b0c4"))))
    (build-system pyproject-build-system)
    (native-inputs
-    (list python-setuptools-scm))
+    (list python-setuptools-scm python-setuptools python-wheel))
    (propagated-inputs
     (list python-humanize python-requests python-six))
    (home-page "https://pypi.org/project/htsget/";)
@@ -2533,6 +2543,7 @@ framework enables the use of any LR method with any 
resources.")
     (build-system pyproject-build-system)
     (propagated-inputs
      (list python-matplotlib python-numpy python-pandas))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://logomaker.readthedocs.io";)
     (synopsis "Package for making Sequence Logos")
     (description "Logomaker is a Python package for generating
@@ -2767,7 +2778,8 @@ three prime UTR.")
            python-pillow
            python-scipy
            python-zarr))
-    (native-inputs (list python-cython python-setuptools-scm))
+    (native-inputs (list python-cython python-setuptools-scm
+                         python-setuptools python-wheel))
     (home-page "https://github.com/lilab-bcb/pegasusio";)
     (synopsis "Read or write single-cell genomics data")
     (description
@@ -2826,7 +2838,7 @@ weight.astype(\"str\") + '\\n')")))))))
            python-scikit-learn
            python-scipy))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/dpeerlab/PhenoGraph.git";)
     (synopsis "Graph-based clustering for high-dimensional single-cell data")
     (description
@@ -2857,6 +2869,7 @@ similarities between cells and then identifying 
communities in this graph.")
            python-numpy
            python-pandas
            python-seaborn))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/biobakery/phylophlan";)
     (synopsis
      "Phylogenetic analysis of microbial isolates and genomes from 
metagenomes")
@@ -2936,6 +2949,8 @@ phylogenetic markers, and can also scale to very large 
phylogenies comprising
            python-cython
            kentutils ; for bedGraphToBigWig
            python-six
+           python-setuptools
+           python-wheel
            ;; For the test suite.
            python-pytest
            python-psutil))
@@ -3316,6 +3331,7 @@ alignments and perform the following operations:
     (build-system pyproject-build-system)
     (arguments (list #:tests? #false))  ;there are none
     (propagated-inputs (list python-pandas))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/alexomics/read-paf";)
     (synopsis "Minimap2 PAF file reader")
     (description
@@ -3428,6 +3444,7 @@ sequencing.")
            (lambda _ (setenv "HOME" "/tmp"))))))
     (propagated-inputs
      (list python-numpy))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://biopython.org/";)
     (synopsis "Tools for biological computation in Python")
     (description
@@ -4487,7 +4504,8 @@ off-target reads for a capture method that targets 
CpG-rich region.")
     (inputs
      (list zlib))
     (native-inputs
-     (list python-cython python-lzo python-pytest))
+     (list python-cython python-lzo python-pytest python-setuptools
+           python-wheel))
     (home-page "https://github.com/bxlab/bx-python";)
     (synopsis "Tools for manipulating biological data")
     (description
@@ -4713,6 +4731,8 @@ subgroups.")
     (native-inputs
      (list python-cython
            python-pytest
+           python-setuptools
+           python-wheel
            ;; Dependencies below are are for tests only.
            samtools
            bcftools))
@@ -4806,6 +4826,8 @@ UCSC genome browser.")
     (native-inputs
      `(("python-cython" ,python-cython)
        ("python-pytest" ,python-pytest)
+       ("python-setuptools" ,python-setuptools)
+       ("python-wheel" ,python-wheel)
        ("test-data"
         ,(origin
            (method url-fetch)
@@ -5133,7 +5155,8 @@ file formats including SAM/BAM, Wiggle/BigWig, BED, 
GFF/GTF, VCF.")
     (arguments
      (list #:tests? #false)) ;there are none
     (native-inputs
-     (list python-cython python-pytest python-setuptools-scm))
+     (list python-cython python-pytest python-setuptools-scm
+           python-setuptools python-wheel))
     (propagated-inputs
      (list python-xopen))
     (home-page "https://github.com/marcelm/dnaio/";)
@@ -5485,6 +5508,7 @@ gkm-SVM.")
      (list python-numpy))
     (inputs
      (list libbigwig zlib curl))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/dpryan79/pyBigWig";)
     (synopsis "Access bigWig files in Python using libBigWig")
     (description
@@ -5610,9 +5634,12 @@ Note that this package has been deprecated in favor of 
@code{pyfaidx}.")
            python-mypy-extensions
            python-rdflib
            python-requests
-           python-ruamel.yaml))
+           python-ruamel.yaml
+           python-setuptools ; For pkg_resources.
+           python-typing-extensions))
     (native-inputs
-     (list python-black python-pytest python-pytest-runner 
python-pytest-xdist))
+     (list python-black python-pytest python-pytest-runner
+           python-wheel))
     (home-page "https://github.com/common-workflow-language/schema_salad";)
     (synopsis "Schema Annotations for Linked Avro Data (SALAD)")
     (description
@@ -5696,6 +5723,7 @@ resources for bioinformatics.")
            python-scikit-learn
            python-scipy
            python-umap-learn))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/swolock/scrublet";)
     (synopsis "Tool to indentify and remove doublets in single-cell data")
     (description "This package provides a tool for identifying and removing
@@ -5861,6 +5889,7 @@ documents.")
            python-requests
            python-ruamel.yaml
            python-schema-salad
+           python-setuptools ; For pkg_resources.
            python-shellescape
            python-spython
            python-typing-extensions
@@ -5874,7 +5903,7 @@ documents.")
            python-pytest-cov
            python-pytest-mock
            python-pytest-runner
-           python-pytest-xdist))
+           python-wheel))
     (home-page
      "https://github.com/common-workflow-language/common-workflow-language";)
     (synopsis "Common Workflow Language reference implementation")
@@ -5928,7 +5957,8 @@ CWL descriptions.")
               (substitute* "tests/test_datamodel_taxon.py"
                 (("collections.Iterable")
                  "collections.abc.Iterable")))))))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-wheel))
+    (propagated-inputs (list python-setuptools))
     (home-page "https://dendropy.org/";)
     (synopsis "Library for phylogenetics and phylogenetic computing")
     (description
@@ -6747,7 +6777,8 @@ multiple DJU methods.")
                (base32
                 "0cjpzyqz6r4lmiwry2gcxdczwpkhl3lyyjg4s8addln17691ysxk"))))
     (build-system pyproject-build-system)
-    (propagated-inputs (list python-pytest))
+    (propagated-inputs (list python-pytest python-setuptools))
+    (native-inputs (list python-wheel))
     (home-page "https://github.com/betteridiot/bamnostic/";)
     (synopsis "Tool for binary alignment map, random access and parsing")
     (description
@@ -6845,7 +6876,7 @@ analysis tool Scanpy (Genome Biology, 2018).")
            python-pyqt
            python-scipy))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "http://etetoolkit.org";)
     (synopsis "Python environment for phylogenetic tree exploration")
     (description
@@ -6866,6 +6897,7 @@ exploration.")
     (build-system pyproject-build-system)
     (arguments (list #:tests? #false))  ;there are none
     (propagated-inputs (list python-matplotlib python-numpy 
python-levenshtein))
+    (native-inputs (list python-setuptools python-wheel python-pip))
     (home-page "https://github.com/meren/illumina-utils";)
     (synopsis "Library and scripts to work with Illumina paired-end data")
     (description
@@ -6889,6 +6921,7 @@ Illumina paired-end data (for CASAVA 1.8+).")
     (propagated-inputs
      (list python-biopython python-matplotlib python-pandas
            python-scipy python-seaborn))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://widdowquinn.github.io/pyani/";)
     (synopsis "Calculate genome-scale average nucleotide identity")
     (description
@@ -10560,7 +10593,9 @@ complexity samples.")
     (build-system pyproject-build-system)
     (native-inputs
      (list python-pytest-cov
-           python-pytest-runner))
+           python-pytest-runner
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/dib-lab/screed/";)
     (synopsis "Short read sequence database utilities")
     (description "Screed parses FASTA and FASTQ files and generates databases.
@@ -10902,7 +10937,7 @@ bioinformatics file formats, sequence alignment, and 
more.")
     (inputs
      (list python-biopython python-pygtrie))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/fhcrc/seqmagick";)
     (synopsis "Tools for converting and modifying sequence files")
     (description
@@ -14097,10 +14132,12 @@ replacement for strverscmp.")
            python-requests
            python-rich
            python-rich-click
+           python-setuptools ; For pkg_resources.
            python-simplejson
            python-spectra))
     (native-inputs
      `(("python-pytest" ,python-pytest)
+       ("python-wheel" ,python-wheel)
        ("tests"
         ,(let ((commit "c3e7400affe3f3ca996973805797af61b93070ba"))
            (origin
@@ -15901,9 +15938,10 @@ using the same syntax.")
                              python-pydot
                              python-requests
                              python-scipy
+                             python-setuptools
                              python-statsmodels
                              python-xlsxwriter))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-wheel))
     (home-page "https://github.com/tanghaibao/goatools";)
     (synopsis "Python scripts to find enrichment of GO terms")
     (description "Python scripts to find enrichment of GO terms.  In addition,
@@ -16019,9 +16057,10 @@ API services.")
            python-pysam
            python-regex
            python-ruamel.yaml
+           python-setuptools
            snakemake))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-wheel))
     (home-page "https://github.com/caleblareau/mgatk";)
     (synopsis "Mitochondrial genome analysis toolkit.")
     (description "This package is a Python-based command line interface for
@@ -18262,6 +18301,7 @@ implementation differs in these ways:
            python-patsy
            python-scikit-learn
            python-scipy
+           python-setuptools ; For pkg_resources.
            python-seaborn
            python-session-info
            python-sinfo
@@ -18655,7 +18695,9 @@ bgzipped text file that contains a pair of genomic 
coordinates per line.")
            python-mock
            python-numpy
            python-pytest
-           python-pytest-cov))
+           python-pytest-cov
+           python-wheel))
+    (propagated-inputs (list python-setuptools))
     (home-page "http://mattshirley.com";)
     (synopsis "Random access to fasta subsequences")
     (description
@@ -18777,7 +18819,7 @@ includes operations like compartment, insulation or 
peak calling.")
            python-scipy
            python-tables))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/deeptools/HiCMatrix/";)
     (synopsis "HiCMatrix class for HiCExplorer and pyGenomeTracks")
     (description
@@ -19640,6 +19682,7 @@ polymorphisms) and indels with respect to a reference 
genome and more.")
            ;; R packages
            r-dnacopy))
     (inputs (list r-minimal)) ;for tests
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://cnvkit.readthedocs.org/";)
     (synopsis "Copy number variant detection from targeted DNA sequencing")
     (description
@@ -21867,7 +21910,9 @@ coordinates between different assemblies.")
      (list python-pytest
            lsof
            inetutils
-           openssl))
+           openssl
+           python-setuptools
+           python-wheel))
     (inputs (list time))
     (propagated-inputs
      (list python-apsw
@@ -22371,6 +22416,7 @@ feature is fast retrieval of range queries into numpy 
arrays.")
      (list python-biopython
            python-matplotlib
            python-packaging))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page
      "https://github.com/Edinburgh-Genome-Foundry/DnaFeaturesViewer";)
     (synopsis "Plot features from DNA sequences")
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index fcc1088fd6..49016a8367 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -76,6 +76,7 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (guix build-system gnu)
@@ -778,6 +779,8 @@ tree binary files.  These are board description files used 
by Linux and BSD.")
            pkg-config                   ;for 'make menuconfig'
            python
            python-pyelftools
+           python-setuptools
+           python-wheel
            swig
            (list util-linux "lib")))
     (home-page "https://www.denx.de/wiki/U-Boot/";)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 6593eadf6a..16791c74da 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -1041,7 +1041,7 @@ report generation engine.")
                  (base32
                   "0gymjcnvjx9snyrzdbmjnk93ibb161q72xam29vnl3yyac4r1330"))))
       (build-system pyproject-build-system)
-      (native-inputs (list python-nose))
+      (native-inputs (list python-nose python-setuptools python-wheel))
       (propagated-inputs
        (list python-cached-property python-configargparse
              python-jinja2 python-six
@@ -2174,7 +2174,8 @@ timeout has been exceeded.")
      ;; 'hypothesis' plugin is not in the environment (due to
      ;; <http://issues.guix.gnu.org/25235>), which would cause the test suite
      ;; to fail (see: https://github.com/pytest-dev/pytest-forked/issues/54).
-     (list python-pytest-bootstrap python-setuptools-scm))
+     (list python-pytest-bootstrap python-setuptools
+           python-setuptools-scm python-wheel))
     (home-page "https://github.com/pytest-dev/pytest-forked";)
     (synopsis "Pytest plugin to run tests in isolated forked subprocesses")
     (description "This package provides a Pytest plugin which enables running
@@ -2499,7 +2500,7 @@ executed.")
                  (lambda _
                    (setenv "SETUPTOOLS_SCM_PRETEND_VERSION"
                            #$(package-version this-package)))))))
-    (native-inputs (list python-setuptools-scm))
+    (native-inputs (list python-setuptools-scm python-setuptools python-wheel))
     (propagated-inputs (list python-pytest))
     (home-page "https://github.com/pytest-dev/pytest-asyncio";)
     (synopsis "Pytest support for asyncio")
@@ -2992,7 +2993,9 @@ a Pytest test execution.")
                              python-mypy
                              python-pytest
                              python-pyyaml
+                             python-setuptools
                              python-regex))
+    (native-inputs (list python-wheel))
     (home-page "https://github.com/TypedDjango/pytest-mypy-plugins";)
     (synopsis "Pytest plugin for writing tests for mypy plugins")
     (description "This package provides a pytest plugin for writing tests for
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 06158f19e7..ede4214f7a 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -3204,6 +3204,7 @@ protocol with Cython for performance.")
     (build-system pyproject-build-system)
     (arguments '(#:tests? #f))           ;test suite requires docker
     (propagated-inputs (list python-pymysql))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/aio-libs/aiomysql";)
     (synopsis "MySQL driver for Python")
     (description "@code{aiomysql} is a driver for accessing a MySQL database
@@ -3645,7 +3646,8 @@ on localhost.")
     (build-system pyproject-build-system)
     (native-inputs
      (list python-cython ; for C extensions
-           python-pytest python-mock python-pytest-xdist)) ; for tests
+           python-pytest python-mock python-pytest-xdist ; for tests
+           python-setuptools python-wheel))
     (propagated-inputs
      (list python-greenlet))
     (arguments
@@ -3880,7 +3882,7 @@ text search extension.")
     (propagated-inputs (list python-click python-click-default-group
                              python-dateutil python-sqlite-fts4
                              python-tabulate))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/simonw/sqlite-utils";)
     (synopsis
      "CLI tool and Python utility functions for manipulating SQLite databases")
@@ -3953,7 +3955,7 @@ PickleShare.")
          "10yfbasi4mq63g0svyl1h49ylwn9znjylq78id16dzxzk9q9ipdx"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list unzip))
+     (list unzip python-setuptools python-wheel))
     (inputs (list sqlite-next))         ;SQLite 3.45.1 required.
     (arguments
      (list
@@ -4308,7 +4310,7 @@ for Python.  The design goals are:
                             ;; The fix was forwarded upstream, see:
                             ;; https://github.com/redis/hiredis-py/pull/160.
                             (delete-file "tests/__init__.py"))))))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (inputs (list hiredis))
     (home-page "https://github.com/redis/hiredis-py";)
     (synopsis "Python extension that wraps protocol parsing code in hiredis")
@@ -4400,6 +4402,8 @@ reasonable substitute.")
      (list python-pytest
            python-pytest-asyncio
            python-pytest-timeout
+           python-setuptools
+           python-wheel
            redis))
     (propagated-inputs
      (list python-async-timeout))
diff --git a/gnu/packages/digest.scm b/gnu/packages/digest.scm
index ae3bf8da75..8e91a9532a 100644
--- a/gnu/packages/digest.scm
+++ b/gnu/packages/digest.scm
@@ -116,7 +116,10 @@ platforms (both big and little endian).")
          "1hdxcscry59gh0znlm71ya23mm9rfmvz8lvvlplzxzf63pib28dc"))))
     (build-system pyproject-build-system)
     ;; Needed to embed the correct version string
-    (native-inputs (list python-setuptools-scm))
+    (native-inputs
+     (list python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/ifduyue/python-xxhash";)
     (synopsis "Python binding for xxHash")
     (description "This package provides Python bindings for the xxHash hash
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 6f449f0c39..7534140976 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2665,9 +2665,14 @@ specification can be downloaded at 
@url{http://3mf.io/specification/}.";)
                             (substitute* "pyvisa/shell.py"
                               (("from .thirdparty import prettytable")
                                "import prettytable")))))))
-    (native-inputs (list python-pytest))
-    (propagated-inputs (list python-dataclasses python-prettytable
-                             python-typing-extensions))
+    (native-inputs
+     (list python-pytest
+           python-setuptools
+           python-wheel))
+    (propagated-inputs
+     (list python-dataclasses
+           python-prettytable
+           python-typing-extensions))
     (home-page "https://pyvisa.readthedocs.io/en/latest/";)
     (synopsis "Python binding for the VISA library")
     (description "PyVISA is a Python package for support of the
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 614d62f439..c7443fe1a1 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -532,7 +532,11 @@ converts any cubic curves to quadratic.  The most useful 
function is probably
        (sha256
         (base32 "1rg2997af8blvswlwif0kpz2vxrlh555gzqslz6yv9y7i7v8lphl"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-pytest python-setuptools-scm))
+    (native-inputs
+     (list python-pytest
+           python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (propagated-inputs
      (list python-booleanoperations
            python-cffsubr
@@ -679,7 +683,8 @@ process.  FontParts is the successor of RoboFab.")
                        "--ignore=tests/builder/interpolation_test.py")))
     (native-inputs
      (list python-setuptools-scm
-
+           python-setuptools
+           python-wheel
            ;; For tests.
            python-pytest
            python-xmldiff))
@@ -859,6 +864,7 @@ suite of the @code{psautohint} package.")
            python-pytest-cov
            python-pytest-xdist
            python-setuptools-scm
+           python-setuptools
            python-wheel))
     (home-page "https://github.com/adobe-type-tools/psautohint";)
     (synopsis "Adobe's PostScript autohinter")
@@ -1782,8 +1788,13 @@ with @samp{nameIDs}.")
         (base32 "0yx4i8q5rfyqhr2fj70a7z1bp1jv7bdlr64ww9z4nv9ycbda4x9j"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest python-setuptools-scm))
-    (propagated-inputs (list python-attrs python-fonttools))
+     (list python-pytest
+           python-setuptools
+           python-setuptools-scm
+           python-wheel))
+    (propagated-inputs
+     (list python-attrs
+           python-fonttools))
     (home-page "https://github.com/fonttools/ufoLib2";)
     (synopsis "Unified Font Object (UFO) font processing library")
     (description "The ufoLib2 Python library is meant to be a thin
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 5d120b3c98..546bc561b5 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -359,7 +359,9 @@ subdivisions.")
            python-numpy
            python-pytest
            python-scikit-build
-           python-setuptools-scm))
+           python-setuptools
+           python-setuptools-scm
+           python-wheel))
     (inputs (list h3))
     (home-page "https://uber.github.io/h3-py";)
     (synopsis "Python bindings for H3")
@@ -1012,7 +1014,7 @@ pyproj, Rtree, and Shapely.")
       (list python-fiona python-packaging python-pandas python-pyproj
             python-shapely))
     (native-inputs
-      (list python-pytest))
+      (list python-pytest python-setuptools python-wheel))
     (home-page "https://geopandas.org";)
     (synopsis "Geographic pandas extensions")
     (description "The goal of GeoPandas is to make working with
@@ -1141,7 +1143,7 @@ during conversion.")
                              python-pandas
                              python-requests
                              python-shapely))
-    (native-inputs (list python-hatchling python-pytest))
+    (native-inputs (list python-hatchling python-pytest python-setuptools 
python-wheel))
     (home-page "https://github.com/gboeing/osmnx";)
     (synopsis
      "Retrieve, model, analyze, and visualize OpenStreetMap street networks")
@@ -2109,7 +2111,7 @@ from multiple records.")
                   (string-append  "\"" libspatialindex
                                   "/lib/libspatialindex_c.so\"")))))))))
     (native-inputs
-     (list python-numpy python-pytest python-wheel))
+     (list python-numpy python-pytest python-setuptools python-wheel))
     (inputs
      (list libspatialindex))
     (home-page "https://github.com/Toblerity/rtree";)
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 02033c25b3..46e556ecc0 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -250,8 +250,12 @@ more.")
                       var (format #f "[~s]~%"
                                   (string-append igraph "/lib")))))))))))
       (inputs (list igraph))
-      (propagated-inputs (list python-texttable))
-      (native-inputs (list python-pytest))
+      (propagated-inputs
+       (list python-texttable))
+      (native-inputs
+       (list python-pytest
+             python-setuptools
+             python-wheel))
       (home-page "https://igraph.org/python/";)
       (synopsis "Python bindings for the igraph network analysis library"))))
 
@@ -419,11 +423,12 @@ algorithm for community detection in large networks.")
                (("self.use_pkgconfig = False")
                 "self.use_pkgconfig = True")))))))
     (inputs (list igraph))
-    (propagated-inputs (list python-igraph))
+    (propagated-inputs (list python-igraph python-setuptools))
     (native-inputs
      (list pkg-config
            python-ddt
-           python-setuptools-scm))
+           python-setuptools-scm
+           python-wheel))
     (home-page "https://github.com/vtraag/louvain";)
     (synopsis "Community detection in large networks")
     (description
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index a1626d3c58..b438c86b5c 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -160,7 +160,9 @@ interfaces for other technical domains.")
            python-mock
            python-pytest
            python-pytest-cov
-           python-pytest-mock))
+           python-pytest-mock
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/xflr6/graphviz";)
     (synopsis "Simple Python interface for Graphviz")
     (description
diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm
index b2216615b9..53a0b98f9a 100644
--- a/gnu/packages/license.scm
+++ b/gnu/packages/license.scm
@@ -191,12 +191,17 @@ belonging to various licenses.")
                         (add-before 'check 'chdir
                           (lambda _
                             (chdir "/tmp"))))))
-    (native-inputs (list python-poetry-core python-pytest))
-    (inputs (list python-binaryornot
-                  python-boolean.py
-                  python-debian
-                  python-jinja2
-                  python-license-expression))
+    (native-inputs
+     (list python-poetry-core
+           python-pytest
+           python-wheel))
+    (inputs
+     (list python-binaryornot
+           python-boolean.py
+           python-debian
+           python-jinja2
+           python-license-expression
+           python-setuptools)) ; For pkg_resources.
     (home-page "https://reuse.software/";)
     (synopsis "Provide and verify copyright and licensing information")
     (description
diff --git a/gnu/packages/machine-learning.scm 
b/gnu/packages/machine-learning.scm
index 988fac3b63..bb59868206 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -1047,7 +1047,7 @@ and not test_wmt22_references")
                              python-portalocker
                              python-regex
                              python-tabulate))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/mjpost/sacrebleu";)
     (synopsis
      "Compute shareable, comparable, and reproducible BLEU, chrF, and TER 
scores")
@@ -1088,7 +1088,7 @@ unsupervised text tokenizer.")
     (build-system pyproject-build-system)
     ;; This package depends on spacy, which depends on this package.
     (arguments (list #:tests? #false))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://spacy.io";)
     (synopsis "Legacy registered functions for spaCy backwards compatibility")
     (description
@@ -1109,7 +1109,7 @@ compatibility.")
     (build-system pyproject-build-system)
     ;; This package depends on spacy, which depends on this package.
     (arguments (list #:tests? #false))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/explosion/spacy-loggers";)
     (synopsis "Logging utilities for SpaCy")
     (description "This package provides logging utilities for the SpaCy
@@ -1967,6 +1967,8 @@ for scientific computing and data science (e.g. BLAS and 
OpenMP).")
                          python-pandas
                          python-pytest
                          python-pytest-cov
+                         python-setuptools
+                         python-wheel
                          tensorflow))
     (home-page "https://github.com/scikit-learn-contrib/imbalanced-learn";)
     (synopsis "Toolbox for imbalanced dataset in machine learning")
@@ -2147,7 +2149,9 @@ standard feature selection algorithms.")
      (list python-pytest
            python-pytest-lazy-fixture
            python-pytorch
-           python-torchvision))
+           python-torchvision
+           python-setuptools
+           python-wheel))
     (home-page "https://cleanlab.ai";)
     (synopsis "Automatically find and fix dataset issues")
     (description
@@ -2179,7 +2183,7 @@ data by providing clean labels during training.")
            python-scipy
            python-tqdm))
     (native-inputs
-     (list python-pytest))))
+     (list python-pytest python-setuptools python-wheel))))
 
 (define-public python-cma
   (package
@@ -2220,7 +2224,7 @@ and a few related numerical optimization tools.")
         (base32 "17bk60mhkglz6s7wz6xcyhw1h4mvghc1iid0805dra7jdyafwrfn"))
        (file-name (git-file-name name version))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-hypothesis))
+    (native-inputs (list python-hypothesis python-setuptools python-wheel))
     (propagated-inputs (list python-numpy))
     (home-page "https://github.com/CyberAgentAILab/cmaes";)
     (synopsis "CMA-ES implementation for Python")
@@ -2386,13 +2390,15 @@ interactive learning.")
            python-networkx
            python-numpy
            python-scipy
+           python-setuptools ; For pkg_resources.
            python-six
            python-tqdm))
     (native-inputs
      (list python-black
            python-nose
            python-pymongo
-           python-pytest))
+           python-pytest
+           python-wheel))
     (home-page "https://hyperopt.github.io/hyperopt/";)
     (synopsis "Library for hyperparameter optimization")
     (description "Hyperopt is a Python library for serial and parallel
@@ -3962,7 +3968,8 @@ These include a barrier, broadcast, and allreduce.")
          ;; nor is examples/plot_quantum.py
          " and not test_file_is_generated"))))
     (propagated-inputs (list python-jsmin python-numpy python-scipy))
-    (native-inputs (list python-pytest python-pytest-cov python-sphinx))
+    (native-inputs (list python-pytest python-pytest-cov python-sphinx
+                         python-setuptools python-wheel))
     (home-page "https://github.com/tensorly/tensorly";)
     (synopsis "Tensor learning in Python")
     (description
@@ -5123,6 +5130,7 @@ as torchvision, torchtext, and others.")
            (lambda _
              (delete-file "readchar/_win_read.py"))))))
     (propagated-inputs (list python-setuptools))
+    (native-inputs (list python-wheel))
     (home-page "https://github.com/magmax/python-readchar";)
     (synopsis "Library to easily read single chars and key strokes")
     (description "This package provides a Python library to easily read single
@@ -5391,7 +5399,7 @@ implementations and an easy-to-use API to create custom 
metrics.  It offers:
            python-pillow-simd
            python-pytorch))
     (native-inputs
-     (list which python-pytest))
+     (list which python-pytest python-setuptools python-wheel))
     (home-page "https://pytorch.org/vision/stable/index.html";)
     (synopsis "Datasets, transforms and models specific to computer vision")
     (description
@@ -5992,7 +6000,7 @@ fi"
                              ;; Required by codegen.
                              python-setuptools
                              python-sympy))
-    (native-inputs (list python-pytest python-pytest-xdist))
+    (native-inputs (list python-pytest python-pytest-xdist python-wheel))
     (home-page "https://briansimulator.org/";)
     (synopsis "Clock-driven simulator for spiking neural networks")
     (description
diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm
index 6325c9b96f..d6fab3f32c 100644
--- a/gnu/packages/monitoring.scm
+++ b/gnu/packages/monitoring.scm
@@ -326,7 +326,10 @@ solution (server-side)")))
                                      (string-append #$output "/share/doc/"
                                                     #$name "/html")))))))
     (native-inputs
-     (list python-pytest python-sphinx))
+     (list python-pytest
+           python-setuptools
+           python-sphinx
+           python-wheel))
     (inputs
      (list ncurses python-requests))
     (home-page "https://github.com/unioslo/zabbix-cli";)
diff --git a/gnu/packages/package-management.scm 
b/gnu/packages/package-management.scm
index 1763d2d59f..77f5540cf1 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1088,7 +1088,11 @@ and not test_conda_root_outside_root_environment"))
          (add-before 'check 'set-HOME
            (lambda _ (setenv "HOME" "/tmp"))))))
     (propagated-inputs
-     (list python-clyent python-nbformat python-pyyaml python-requests))
+     (list python-clyent
+           python-nbformat
+           python-pyyaml
+           python-requests
+           python-setuptools))
     (native-inputs
      (list python-coverage
            python-dateutil
@@ -1096,7 +1100,8 @@ and not test_conda_root_outside_root_environment"))
            python-mock
            python-pillow
            python-pytest
-           python-pytz))
+           python-pytz
+           python-wheel))
     (home-page "https://github.com/Anaconda-Platform/anaconda-client";)
     (synopsis "Anaconda Cloud command line client library")
     (description
diff --git a/gnu/packages/potassco.scm b/gnu/packages/potassco.scm
index ec990f1382..914779a27b 100644
--- a/gnu/packages/potassco.scm
+++ b/gnu/packages/potassco.scm
@@ -589,7 +589,7 @@ are already predefined, but more can be added as logic 
programs.")
                    (setenv "CLORM_NOCLINGO" "1")
                    (delete-file "tests/test_mypy_query.py"))))))
     (propagated-inputs (list python-clingo))
-    (native-inputs (list python-typing-extensions))
+    (native-inputs (list python-typing-extensions python-setuptools 
python-wheel))
     (home-page "https://potassco.org";)
     (synopsis "Object relational mapping to clingo")
     (description "@acronym{Clorm, Clingo ORM} provides an @acronym{ORM,
@@ -651,6 +651,7 @@ the most probable model as well as finding all models and 
their probabilities.")
                 "1q6hlh4b5hsa4n5agvmfa9rhsxfd2g6kpl4b9kfccwbmf6dh51k6"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-clingo))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://potassco.org/";)
     (synopsis "Solve dynamic temporal logic programs")
     (description "This package provides a system to solve dynamic temporal
@@ -678,8 +679,10 @@ logic programs based on clingo.")
                              python-imageio
                              python-jinja2
                              python-jsonschema
-                             python-networkx))
-    (native-inputs (list dot2tex graphviz python-pylint python-pytest))
+                             python-networkx
+                             python-setuptools))
+    (native-inputs (list dot2tex graphviz python-pylint python-pytest
+                         python-wheel))
     (home-page "https://github.com/potassco/clingraph";)
     (synopsis "Visualizer for graphs defined as logic programs")
     (description
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index b8679eff25..73e14b3dd8 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -395,7 +395,9 @@ any memory-restricted system.")
      (list python-grpc-stubs
            python-grpcio-tools
            python-pytest
-           python-typing-extensions))
+           python-typing-extensions
+           python-setuptools
+           python-wheel))
     (propagated-inputs
      (list protobuf
            python-protobuf
diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm
index 5b46272bde..5327ad6713 100644
--- a/gnu/packages/python-build.scm
+++ b/gnu/packages/python-build.scm
@@ -218,7 +218,7 @@ Python file, so it can be easily copied into your project.")
     (build-system pyproject-build-system)
     (arguments (list #:build-backend "setuptools.build_meta"
                      #:tests? #f))      ;keep dependencies to a minimum
-    (native-inputs (list python-wheel))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/pypa/trove-classifiers";)
     (synopsis "Canonical source for classifiers on PyPI")
     (description "This package is the canonical source for classifiers use on
@@ -649,6 +649,7 @@ specified by PEP 517, @code{flit_core.buildapi}.")
                      ;; builder instead.
                      #:build-backend "setuptools.build_meta"))
     (propagated-inputs (list python-flit-core python-setuptools-scm 
python-tomli))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://gitlab.com/WillDaSilva/flit_scm";)
     (synopsis "PEP 518 build backend combining flit_core and setuptools_scm")
     (description "This package provides a PEP 518 build backend that uses
diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm
index 7f8e96c311..76fdd7d1ee 100644
--- a/gnu/packages/python-check.scm
+++ b/gnu/packages/python-check.scm
@@ -791,8 +791,13 @@ files and/or directories.")
                          ;; Requiring git available.
                          " and not test_generate_diff_basic"))))
     (native-inputs
-     (list python-numpy python-pytest python-setuptools-scm))
-    (home-page "https://github.com/scientific-python/pytest-doctestplus";)
+     (list python-numpy
+           python-pytest
+           python-setuptools-scm
+           python-wheel))
+    (propagated-inputs
+     (list python-setuptools)) ;for pkg_resources
+    (home-page "https://github.com/astropy/pytest-doctestplus";)
     (synopsis "Pytest plugin with advanced doctest features")
     (description
      "This package contains a plugin for the Pytest framework that provides
@@ -841,7 +846,9 @@ for interactively selecting and running Pytest tests.")
      (list python-pytest
            python-pytest-cov
            python-pytest-doctestplus
-           python-setuptools-scm))
+           python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/astropy/pytest-filter-subpackage";)
     (synopsis "Pytest plugin for filtering based on sub-packages")
     (description
@@ -946,7 +953,10 @@ were inadvertently left open at the end of a unit test.")
                                  "not test_default_behavior"
                                  " and not test_strict_with_decorator"))))
     (native-inputs
-     (list python-pytest python-setuptools-scm))
+     (list python-pytest
+           python-setuptools
+           python-setuptools-scm
+           python-wheel))
     (propagated-inputs
      (list python-packaging))
     (home-page "https://github.com/astropy/pytest-remotedata";)
@@ -1041,6 +1051,7 @@ framework and makes it easy to undo any monkey patching.  
The fixtures are:
       #:test-flags #~(list "-m" "mpl_image_compare")))
     (native-inputs
      (list python-pytest
+           python-setuptools
            python-setuptools-scm
            python-wheel))
     (propagated-inputs
@@ -2055,7 +2066,11 @@ the implementation of that name.")
                 (("def test_memory_profiler")
                  "def __off_test_memory_profiler")))))))
     (native-inputs
-     (list python-pytest python-pytest-fixture-config python-safety))
+     (list python-pytest
+           python-pytest-fixture-config
+           python-safety
+           python-setuptools
+           python-wheel))
     (propagated-inputs (list python-psutil))
     (home-page "https://github.com/pythonprofilers/memory_profiler";)
     (synopsis "Memory profiler for Python")
@@ -2512,7 +2527,7 @@ most situations.")
     (native-inputs
      (list python-pbr python-ddt python-pytest))
     (propagated-inputs
-     (list python-aiohttp))
+     (list python-aiohttp python-setuptools))
     (home-page "https://github.com/pnuckowski/aioresponses";)
     (synopsis "Mock out requests made by ClientSession from aiohttp package")
     (description
@@ -2760,7 +2775,9 @@ which make writing and running functional and integration 
tests easier.")
     (native-inputs
      (list python-jinja2
            python-pytest
-           python-tox))
+           python-tox
+           python-setuptools
+           python-wheel))
     (home-page "https://nox.thea.codes/";)
     (synopsis "Flexible test automation")
     (description
@@ -2913,8 +2930,12 @@ parametrize.  This plugin allows you to use all four.")
        (sha256
         (base32 "1ncpd74hmsz4sadvjg99fnfscxpgh3mc2siini0dhxzwgwdkk5i7"))))
     (build-system pyproject-build-system)
+    (native-inputs
+     (list python-pytest
+           python-pytest-asyncio
+           python-setuptools
+           python-wheel))
     (propagated-inputs (list python-httpx))
-    (native-inputs (list python-pytest python-pytest-asyncio))
     (home-page "https://colin-b.github.io/pytest_httpx/";)
     (synopsis "Pytest plugin to mock httpx")
     (description "This package provides a pytest fixture to mock httpx
@@ -2991,7 +3012,11 @@ running acceptance tests on headless servers.")
                                       ;; skip test that uses python-pint
                                       ;; pint has many dependencies
                                       "not test_whitelists_with_python")))))))
-    (native-inputs (list python-pytest python-pytest-cov))
+    (native-inputs
+     (list python-pytest
+           python-pytest-cov
+           python-setuptools
+           python-wheel))
     (propagated-inputs (list python-toml))
     (home-page "https://github.com/jendrikseipp/vulture";)
     (synopsis "Find dead Python code")
diff --git a/gnu/packages/python-compression.scm 
b/gnu/packages/python-compression.scm
index cfabc618d2..3c3c00aff4 100644
--- a/gnu/packages/python-compression.scm
+++ b/gnu/packages/python-compression.scm
@@ -114,7 +114,9 @@ This Python package wraps the Blosc library.")
            python-hypothesis
            python-pyannotate
            python-pytest
-           python-pytest-cov))
+           python-pytest-cov
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/miurahr/multivolume";)
     (synopsis "Treat multiple files as one")
     (description "MultiVolumefile is a Python library that provides a
@@ -251,7 +253,9 @@ following algorithms are available:
            python-hypothesis
            python-pytest
            python-pytest-cov
-           python-setuptools-scm))
+           python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (home-page "https://codeberg.org/miurahr/pybcj";)
     (synopsis "BCJ filter library")
     (description "In data compression, BCJ, short for Branch-Call-Jump, refers
@@ -311,6 +315,7 @@ Jump conversion filter by CFFI for Python.")
                (setenv "USE_SHARED_BROTLI" "1"))))))
     (propagated-inputs (list python-cffi))
     (inputs (list brotli))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/python-hyper/brotlicffi";)
     (synopsis "Python CFFI bindings to the Brotli library")
     (description "This package provides Python CFFI bindings to the Brotli
@@ -332,7 +337,9 @@ library.")
     (native-inputs
      (list python-pyannotate
            python-pytest
-           python-setuptools-scm))
+           python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (home-page "https://pypi.org/project/inflate64/";)
     (synopsis "deflate64 compression/decompression library")
     (description "The @code{inflate64} package provides @code{Deflater} and
@@ -361,7 +368,7 @@ compression algorithm.")
          (add-after 'unpack 'use-dynamic-linking
            (lambda _ (setenv "PYTHON_ISAL_LINK_DYNAMIC" "1"))))))
     (inputs (list isa-l))
-    (native-inputs (list python-cython))
+    (native-inputs (list python-cython python-setuptools python-wheel))
     (home-page "https://github.com/pycompression/python-isal";)
     (synopsis "Python bindings for the ISA-L compression library")
     (description
@@ -407,7 +414,9 @@ headers compressed with QPACK.")
            python-pytest-benchmark
            python-pytest-cov
            python-pytest-timeout
-           python-setuptools-scm))
+           python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/miurahr/pyppmd";)
     (synopsis "PPMd compression/decompression library")
     (description "Pyppmd provides classes and functions for compressing and
@@ -468,9 +477,8 @@ several possible methods.")
            python-pyzstd
            python-texttable))
     (native-inputs
-     (list python-setuptools
-           python-setuptools-scm
-           python-coverage
+     (list python-coverage
+           python-setuptools
            python-coveralls
            python-libarchive-c
            python-py-cpuinfo
@@ -479,7 +487,9 @@ several possible methods.")
            python-pytest-benchmark
            python-pytest-cov
            python-pytest-remotedata
-           python-pytest-timeout))
+           python-pytest-timeout
+           python-setuptools-scm
+           python-wheel))
     (home-page "https://github.com/miurahr/py7zr";)
     (synopsis "7-zip in Python")
     (description "This package provides py7zr, which implements 7-zip
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 3a7f53abee..aefe8d34ac 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -302,7 +302,9 @@ do what is needed for client/server Kerberos authentication 
based on
     (native-inputs
      (list python-toml
            python-pytest
-           python-setuptools-scm))
+           python-setuptools
+           python-setuptools-scm
+           python-wheel))
     (propagated-inputs
      (list python-importlib-metadata
            python-jaraco-classes
@@ -530,11 +532,13 @@ is used by the Requests library to verify HTTPS 
requests.")
     (build-system pyproject-build-system)
     (arguments (list #:tests? #f))  ; No tests included.
     (native-inputs
-     (list python-flit-core))
+     (list python-flit-core
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/pyca/cryptography";)
     (synopsis "Test vectors for the cryptography package")
     (description
-      "This package contains test vectors for the cryptography package.")
+     "This package contains test vectors for the cryptography package.")
     ;; Distributed under either BSD-3 or ASL2.0
     (license (list license:bsd-3 license:asl2.0))))
 
@@ -574,7 +578,10 @@ is used by the Requests library to verify HTTPS requests.")
            python-iso8601
            python-pretend
            python-pytest                ;for subtests
-           python-pytest-benchmark))
+           python-pytest-benchmark
+           python-pytest-subtests
+           python-setuptools
+           python-wheel))
     (inputs (list python-cryptography-rust))
     (propagated-inputs (list python-cffi))
     (home-page "https://github.com/pyca/cryptography";)
@@ -1072,7 +1079,7 @@ provides drop-in compatibility with PyCrypto.")))
        ;; certificates.
        #:tests? #f))
     (inputs (list openssl))
-    (native-inputs (list swig))
+    (native-inputs (list swig python-setuptools python-wheel))
     (home-page "https://gitlab.com/m2crypto/m2crypto";)
     (synopsis "Python crypto and TLS toolkit")
     (description "@code{M2Crypto} is a complete Python wrapper for OpenSSL
@@ -1259,7 +1266,11 @@ derivation function.")
                (base32
                 "0d4x84crbz0a17d8gi90z6zlxwm9pslc65rx0cdw2797ra360v3f"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-idna python-pytest))
+    (native-inputs
+     (list python-idna
+           python-pytest
+           python-setuptools
+           python-wheel))
     (propagated-inputs (list python-attrs python-cryptography python-pyasn1
                              python-pyasn1-modules python-six))
     (home-page "https://service-identity.readthedocs.io/";)
@@ -1490,6 +1501,8 @@ items and collections, editing items, locking and 
unlocking collections
            python-pytest
            python-pytest-cov
            python-service-identity
+           python-setuptools
+           python-wheel
            python-zipp))
     (propagated-inputs
      (list python-cryptography
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 6cc9269af3..99f32a64d6 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -369,9 +369,12 @@ routines such as routines for numerical integration and 
optimization.")
              (invoke "python" "setup.py" "build_ext" "--inplace"))))))
     (propagated-inputs
      (list python-dask
-           python-numpy))
+           python-numpy
+           python-click))
     (native-inputs
      (list python-cython
+           python-setuptools
+           python-wheel
            ;; The following are all needed for the tests
            htslib
            python-h5py
@@ -590,7 +593,7 @@ swarm algorithm.")
            python-scikit-learn
            python-scipy))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://scikit-optimize.github.io/";)
     (synopsis "Sequential model-based optimization toolbox")
     (description "Scikit-Optimize, or @code{skopt}, is a simple and efficient
@@ -1777,7 +1780,7 @@ multiple deep learning frameworks.")
              (string-append "not test_datetime_conversion_warning"
                             " and not test_timedelta_conversion_warning"))))
     (native-inputs
-     (list python-setuptools-scm python-pytest))
+     (list python-setuptools python-setuptools-scm python-pytest python-wheel))
     (propagated-inputs
      (list python-numpy python-packaging python-pandas))
     (home-page "https://github.com/pydata/xarray";)
@@ -1944,7 +1947,9 @@ parentdir_prefix = pytensor-
     (native-inputs (list python-cython
                          python-pytest
                          python-pytest-mock
-                         python-versioneer))
+                         python-versioneer
+                         python-setuptools
+                         python-wheel))
     (propagated-inputs (list python-cons
                              python-etuples
                              python-filelock
@@ -2804,7 +2809,9 @@ aggregated sum and more.")
                          python-pandas
                          python-pytest
                          python-pytest-cov
+                         python-setuptools
                          python-setuptools-scm
+                         python-wheel
                          tzdata-for-tests))
     (home-page "https://github.com/has2k1/plotnine";)
     (synopsis "Grammar of Graphics for Python")
@@ -3588,7 +3595,12 @@ compagnies.")
                 "0mrm4rd6x1sm6hkvhk20mkqp9q53sl3lbvq6hqzyymkw1iqq6bhy"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-lxml python-six))
-    (native-inputs (list python-pytest python-numpy python-tables))
+    (native-inputs
+     (list python-pytest
+           python-numpy
+           python-setuptools
+           python-tables
+           python-wheel))
     (home-page "https://libneuroml.readthedocs.org/en/latest/";)
     (synopsis
      "Python library for working with NeuroML descriptions of neuronal models")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index d892e03c9d..88a46c80c5 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -442,7 +442,12 @@ by calling @code{FrozenList.freeze}.")
     (build-system pyproject-build-system)
     (arguments (list #:test-flags #~(list "tests")))
     (propagated-inputs (list python-frozenlist))
-    (native-inputs (list python-pytest python-pytest-asyncio 
python-pytest-cov))
+    (native-inputs
+     (list python-pytest
+           python-pytest-asyncio
+           python-pytest-cov
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/aio-libs/aiosignal";)
     (synopsis "Callback manager for Python @code{asyncio} projects")
     (description "This Python module provides @code{Signal}, an abstraction to
@@ -763,7 +768,9 @@ WSGI.  This package includes libraries for implementing 
ASGI servers.")
                          python-httpx
                          python-pytest
                          python-pytest-asyncio
-                         python-starlette))
+                         python-starlette
+                         python-setuptools
+                         python-wheel))
     (home-page "https://github.com/simonw/asgi-csrf";)
     (synopsis "ASGI middleware for protecting against CSRF attacks")
     (description "This Asynchronous Server Gateway Interface (ASGI)
@@ -804,7 +811,9 @@ that is then compared to a @code{csrftoken} hidden form 
field or a
     (native-inputs (list python-pytest
                          python-pytest-asyncio
                          python-pytest-trio
-                         python-starlette))
+                         python-starlette
+                         python-setuptools
+                         python-wheel))
     (propagated-inputs (list python-sniffio))
     (home-page "https://github.com/florimondmanca/asgi-lifespan";)
     (synopsis "Programmatic startup/shutdown of ASGI apps")
@@ -968,7 +977,9 @@ Model} (SAM) templates into AWS CloudFormation templates.")
            python-pytest-benchmark
            python-requests
            python-sqlalchemy
-           python-webtest))
+           python-webtest
+           python-setuptools
+           python-wheel))
     (propagated-inputs
      (list python-aiohttp
            python-botocore
@@ -1305,7 +1316,9 @@ over a different origin than that of the web 
application.")
            python-pytest-randomly
            python-pytest-timeout
            python-pytest-xdist
-           python-six))
+           python-six
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/httplib2/httplib2";)
     (synopsis "Comprehensive HTTP client library")
     (description
@@ -1701,7 +1714,7 @@ for use in Python programs that implement HTTP/2.")
         (base32 "17b97c56y31hi0n0x0cb5a87x4xr9jijf2y06pzj0977k6zgn6cg"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/python-hyper/h11";)
     (synopsis "Pure-Python, bring-your-own-I/O implementation of HTTP/1.1")
     (description
@@ -2157,7 +2170,9 @@ is Python’s.")
            python-pytest-socket
            python-requests-mock
            python-setuptools-scm
-           python-tox))
+           python-tox
+           python-setuptools
+           python-wheel))
     (home-page "https://omnipathdb.org/";)
     (synopsis "Python client for the OmniPath web service")
     (description "This package provides a Python client for the OmniPath web
@@ -2187,7 +2202,7 @@ service.")
     (propagated-inputs (list python-aiohttp python-requests python-tqdm
                              python-typing-extensions))
     (native-inputs (list python-black python-pytest python-pytest-asyncio
-                         python-pytest-mock))
+                         python-pytest-mock python-setuptools python-wheel))
     (home-page "https://github.com/openai/openai-python";)
     (synopsis "Python client library for the OpenAI API")
     (description "This package provides a Python client library for the
@@ -2392,7 +2407,7 @@ for clients and servers.")
                                      "and not encutils "
                                      "and not website.logging")))))))
     (native-inputs
-     (list python-pytest python-jaraco-test))
+     (list python-pytest python-jaraco-test python-setuptools python-wheel))
     (home-page "https://github.com/jaraco/cssutils";)
     (synopsis
       "CSS Cascading Style Sheets library for Python")
@@ -2570,7 +2585,7 @@ set out in RFC 7540 Section 5.3 (Stream Priority).")
         (base32 "0rahm1j9danv1l6i6as80acwv16ycihxkhrvwjiqh9drxhk5ymmd"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (propagated-inputs
      (list python-h11))
     (home-page "https://github.com/python-hyper/wsproto/";)
@@ -4316,7 +4331,7 @@ presume or force a developer to use a particular tool or 
library.")
                 "178jzz6jxlxllcjqamzh5q7ahfh90m5cl1il9vmjs3xhz65z35pf"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-brotli python-flask))
-    (native-inputs (list python-setuptools-scm))
+    (native-inputs (list python-setuptools-scm python-setuptools python-wheel))
     (home-page "https://github.com/colour-science/flask-compress";)
     (synopsis "Compress responses in a Flask app")
     (description
@@ -4339,6 +4354,7 @@ headers required for a compressed response and compresses 
the response data.")
     (arguments
      (list #:tests? #false)) ;there are none
     (propagated-inputs (list python-flask))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/maxcountryman/flask-seasurf/";)
     (synopsis "CSRF extension for Flask")
     (description "SeaSurf is a Flask extension for preventing cross-site
@@ -4770,7 +4786,7 @@ transfers.")
                             "flask_jwt/__init__.py")
                (("access_token.decode\\('utf-8'\\)") "access_token")))))))
     (propagated-inputs (list python-flask python-pyjwt))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/mattupstate/flask-jwt";)
     (synopsis "JWT token authentication for Flask apps")
     (description "This package implements JWT token authentication for Flask
@@ -4797,7 +4813,9 @@ apps.")
     (native-inputs
      (list python-blinker
            python-mock
-           python-pytest))
+           python-pytest
+           python-setuptools
+           python-wheel))
     (home-page "https://www.github.com/flask-restful/flask-restful/";)
     (synopsis "Flask module for creating REST APIs")
     (description
@@ -5463,9 +5481,9 @@ package from WTForms.  The package has been renamed to
            (delete-file "tests/test_proxy.py") #t))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest python-nose))
+     (list python-pytest python-wheel))
     (propagated-inputs
-     (list python-six))
+     (list python-six python-setuptools))
     (home-page "https://pythonpaste.readthedocs.io/";)
     (synopsis
      "Python web development tools, focusing on WSGI")
@@ -5738,6 +5756,7 @@ with oauthlib.")
            python-stem
            python-validators
            python-waitress))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/benbusby/whoogle-search";)
     (synopsis "Self-hosted, ad-free, privacy-respecting metasearch engine")
     (description
@@ -5835,7 +5854,7 @@ ecosystem.")
                    ;; Pretend to be a CI system to skip flaky tests.
                    (setenv "CI" "true"))))))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (propagated-inputs
      (list python-idna))
     (home-page "https://github.com/python-hyper/hyperlink";)
@@ -6617,7 +6636,9 @@ and serve updated contents upon changes to the 
directory.")
            python-pytest-httpbin
            python-pytest-trio
            python-uvicorn
-           python-trustme))
+           python-setuptools
+           python-trustme
+           python-wheel))
     (propagated-inputs
      (list python-anyio
            python-certifi
@@ -6651,7 +6672,7 @@ Some things HTTP Core does do:
    (package/inherit python-httpcore
      (name "python-httpcore-bootstrap")
      (arguments (list #:tests? #f))
-     (native-inputs '()))))
+     (native-inputs (list python-setuptools python-wheel)))))
 
 (define-public python-httpx
   (package
@@ -6696,7 +6717,9 @@ Some things HTTP Core does do:
            python-trio
            python-trio-typing
            python-trustme
-           python-uvicorn))
+           python-uvicorn
+           python-setuptools
+           python-wheel))
     (propagated-inputs
      (list python-charset-normalizer
            python-brotli
@@ -6928,7 +6951,7 @@ major web browsers.")
                                 "/include/rapidjson" "'"))
                 (("if not os.path.isdir.*") "if False:")))))))
     (native-inputs
-     (list rapidjson python-pytest python-pytz))
+     (list rapidjson python-pytest python-pytz python-setuptools python-wheel))
     (home-page "https://github.com/python-rapidjson/python-rapidjson";)
     (synopsis "Python wrapper around rapidjson")
     (description "This package provides a python wrapper around rapidjson.")
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 22e89a3b80..f915d21fd1 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -511,7 +511,8 @@ similar XML files, in the same way the @command{diff} 
utility does it.")
         (base32 "04hnrdcf03g1s0x3sr72sh9gnszz6kyfsl9dg8a4n0zvvhn6z5yz"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest python-pytest-cov python-pytest-asyncio))
+     (list python-pytest python-pytest-cov python-pytest-asyncio
+           python-setuptools python-wheel))
     (propagated-inputs (list python-typing-extensions))
     (home-page "https://github.com/aio-libs/janus/";)
     (synopsis
@@ -974,6 +975,7 @@ and variables you'll need already imported and created.
              (substitute* "setup.py"
                ((".\\*\"") "\"")))))))
     (propagated-inputs (list python-numpy python-scipy))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/joachimwolff/fit_nbinom";)
     (synopsis "Negative binomial maximum likelihood estimator")
     (description "This package provides an implementation in Python using
@@ -992,7 +994,8 @@ scipy and numpy of negative binomial maximum likelihood 
estimation.")
                 "0523jrzjj29kxpdllmfhrfj9kysi9mphp2m7ippjkn5b07i1g2pd"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-six))
-    (native-inputs (list python-pytest python-pytest-runner))
+    (native-inputs (list python-pytest python-pytest-runner
+                         python-setuptools python-wheel))
     (home-page "https://github.com/Chilipp/docrep";)
     (synopsis "Python package for docstring repetition")
     (description "Docrep is the documentation repetition module.  This module
@@ -1070,6 +1073,7 @@ features of the Python's built-in dict.")
     (build-system pyproject-build-system)
     (arguments (list #:tests? #false)) ;there are none
     (propagated-inputs (list python-matplotlib python-numpy))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/Phlya/adjustText";)
     (synopsis "Adjust text position in matplotlib plots to minimize overlaps")
     (description
@@ -1231,6 +1235,7 @@ HoloViews, and Datashader.")
                 "196ins0m7f90xz5dw764dlx060ziqbcydqzzq40b4ir5858baf3r"))))
     (build-system pyproject-build-system)
     (arguments (list #:tests? #false)) ;the tests are not run automatically
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://gitlab.com/dslackw/colored";)
     (synopsis "Simple library for color and formatting to terminal")
     (description "This is a very simple Python library for color and
@@ -1253,7 +1258,8 @@ names for 256 color terminal setups.")
         (base32 "0kyy9qhvrb5m9h8xmri7c88i0k1g5qc7017anw39gx44an7mn33y"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-coverage python-flake8 python-pytest))
+     (list python-coverage python-flake8 python-pytest python-setuptools
+           python-wheel))
     (propagated-inputs
      (list python-colorama))
     (home-page "http://github.com/timofurrer/colorful";)
@@ -1694,7 +1700,8 @@ Specification v2.0 (PEP 249).")
                (base32
                 "0gxkw607nrd67ck4w8jri9vfrm5g60qvp8b134m8zkiphbxjnx0l"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-pytest python-jinja2 python-pygments))
+    (native-inputs (list python-pytest python-jinja2 python-pygments
+                         python-setuptools python-wheel))
     (arguments
      (list
       ;; Some tests fail, presumably because of slight version mismatches of
@@ -1801,6 +1808,7 @@ different units.")
                 "1gpy1z2i4vq1mcrhysxahz4339pbl9rzk58rf5m5gf5ym9xji6ii"))))
     (build-system pyproject-build-system)
     (arguments (list #:tests? #false)) ;there are none
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/piccolomo/plotext";)
     (synopsis "Plots in the terminal")
     (description "Plotext lets you plot directly to the terminal.")
@@ -1995,6 +2003,8 @@ generator MkDocs.")
            python-matplotlib
            python-pandas
            python-poetry-core
+           python-setuptools
+           python-wheel
            python-pytest))
     (home-page "https://github.com/crflynn/skranger";)
     (synopsis "Python bindings for C++ ranger random forests")
@@ -2162,7 +2172,7 @@ threads.")
     (build-system pyproject-build-system)
     (native-inputs
      (list python-setuptools-scm python-tornado-6 python-typeguard
-           python-pytest))
+           python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/jd/tenacity";)
     (synopsis "Retrying library for python")
     (description "Tenacity is a general-purpose python library to simplify the
@@ -2647,7 +2657,7 @@ utilities such as ping(1).")
                              python-click-plugins
                              python-cligj
                              python-numpy
-                             python-setuptools
+                             python-setuptools ; For pkg_resources.
                              python-snuggs))
     (native-inputs (list gdal
                          python-boto3
@@ -2656,7 +2666,8 @@ utilities such as ping(1).")
                          python-packaging
                          python-pytest
                          python-pytest-cov
-                         python-shapely))
+                         python-shapely
+                         python-wheel))
     (home-page "https://github.com/rasterio/rasterio";)
     (synopsis "Fast and direct raster I/O for use with Numpy and SciPy")
     (description "This package implements fast and direct raster I/O for use
@@ -2683,7 +2694,7 @@ with Numpy and SciPy.")
              ;; Cython extensions have to be built before running the tests.
              (invoke "python" "setup.py" "build_ext" "--inplace"))))))
     (native-inputs
-     (list python-cython python-matplotlib python-pytest))
+     (list python-cython python-matplotlib python-pytest python-setuptools 
python-wheel))
     (inputs
      (list geos))
     (propagated-inputs
@@ -2969,7 +2980,9 @@ NetCDF files can also be read and modified.  Python-HDF4 
is a fork of
     (native-inputs
      (list python-netcdf4
            python-pytest
-           python-setuptools-scm))
+           python-setuptools
+           python-setuptools-scm
+           python-wheel))
     (propagated-inputs
      (list python-h5py python-packaging))
     (home-page "https://h5netcdf.org";)
@@ -3311,7 +3324,7 @@ and lookups.")
         (base32 "0lvshl2fhwa568d3y3vmx45hdp8gk5w9yl3b2q5d66r5vqn1sfwl"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-setuptools-scm python-pytest))
+     (list python-setuptools-scm python-pytest python-setuptools python-wheel))
     (propagated-inputs
      (list python-boolean.py))
     (home-page "https://github.com/nexB/license-expression";)
@@ -3433,7 +3446,8 @@ inter-process communication.")
         (base32
          "058av1r760ws7z6qffsjpqa39fmdxw0s1wnyr7p50y3zclg6cyqk"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-pytest python-setuptools-scm))
+    (native-inputs (list python-pytest python-setuptools-scm
+                         python-setuptools python-wheel))
     (home-page "https://github.com/tox-dev/py-filelock";)
     (synopsis "Platform independent file lock")
     (description "@code{filelock} contains a single module implementing
@@ -3717,7 +3731,8 @@ your Python package version as a calendar version.")
          ;; These tests fail with "OSError: [Errno 19] No such device".
          "-k" "not BasicTestUdpMulticastBusIPv")))
     (propagated-inputs
-     (list python-msgpack python-typing-extensions python-wrapt))
+     (list python-msgpack python-typing-extensions python-wrapt
+           python-setuptools))
     (native-inputs
      (list ;; python-canalystii ; Not packed yet
            python-codecov
@@ -3730,7 +3745,8 @@ your Python package version as a calendar version.")
            python-pytest
            python-pytest-cov
            python-pytest-runner
-           python-pytest-timeout))
+           python-pytest-timeout
+           python-wheel))
     (home-page "https://github.com/hardbyte/python-can";)
     (synopsis "Controller Area Network (CAN) interface module for Python")
     (description "This package defines the @code{can} module, which provides
@@ -3865,6 +3881,7 @@ a library.")
         (base32 "1920wbh2b7a8qn7zx2iiqbcdaax335l81a73x9pp8h11yzs2jdmh"))))
     (build-system pyproject-build-system)
     (arguments (list #:tests? #false))  ;There are none
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/gvalkov/optparse-pretty";)
     (synopsis "Compact help formatter for optparse")
     (description
@@ -4075,6 +4092,7 @@ for additional processing.")
                         ;; XXX: Fails with: "In procedure utime: No such file
                         ;; or directory".
                         (delete 'ensure-no-mtimes-pre-1980))))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/fastai/fastprogress";)
     (synopsis "Progress bar for Jupyter Notebook and console")
     (description
@@ -4308,6 +4326,8 @@ of @code{xmlfile}.")
            python-pytest
            python-pytest-rerunfailures
            python-pytest-xdist
+           python-setuptools
+           python-wheel
            unzip
            (origin
              (method url-fetch)
@@ -4670,7 +4690,9 @@ Python.")
            python-pytest-subtests
            python-responses
            python-tox
-           python-types-requests))
+           python-types-requests
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/omni-us/jsonargparse/";)
     (synopsis "Implement minimal boilerplate CLIs derived from type hints")
     (description
@@ -4899,7 +4921,7 @@ commands.")
                (base32
                 "1a4h0jpsr3wjciqg9a5kslxv65d3qqgmqgkpai4cl77wlpcxfk89"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://jiffyclub.github.io/palettable/";)
     (synopsis "Color palettes for Python")
     (description "Palettable (formerly brewer2mpl) is a library of color
@@ -4980,7 +5002,8 @@ syntax.")
                            (string-append "not test_sending_empty_netstring"
                             " and not test_sending_one_netstring"
                             " and not test_sending_two_netstrings"))))
-    (native-inputs (list python-pytest python-twisted))
+    (native-inputs (list python-pytest python-twisted python-setuptools
+                         python-wheel))
     (home-page "https://launchpad.net/parsley";)
     (synopsis "Parsing and pattern matching Python library")
     (description
@@ -5131,7 +5154,9 @@ PDF, PNG, EPS and SVG).")
                          python-pytest-cov
                          python-pytest-mypy
                          python-pytest-timeout
-                         python-redis))
+                         python-redis
+                         python-setuptools
+                         python-wheel))
     (home-page "https://github.com/WoLpH/portalocker";)
     (synopsis "Python library for file locking")
     (description "Portalocker is a library to provide an easy API to file
@@ -5239,14 +5264,16 @@ and is not compatible with JSON.")
            python-pytest-astropy
            python-pytest-cov
            python-setuptools-scm
-           python-tomli))
+           python-tomli
+           python-setuptools
+           python-wheel))
     (home-page "https://extension-helpers.readthedocs.io";)
     (synopsis "Astropy ecosystem utilities for building and installing 
packages")
     (description
-     "The extension-helpers package includes convenience helpers to assist with
-building Python packages with compiled C/Cython extensions.  It is developed by
-the Astropy project but is intended to be general and usable by any Python
-package.")
+     "The extension-helpers package includes convenience helpers to assist
+with building Python packages with compiled C/Cython extensions.  It is
+developed by the Astropy project but is intended to be general and usable by
+any Python package.")
     (license license:bsd-3)))
 
 (define-public python-extras
@@ -5734,12 +5761,14 @@ clickgen is using @code{anicursorgen} and 
@code{xcursorgen} under the hood.")
            python-orjson
            python-pandas
            python-pytz
+           python-setuptools ; For pkg_resources.
            python-sqlalchemy
            python-urllib3
            python-zstandard))
     (native-inputs
      (list python-cython
-           python-pytest))
+           python-pytest
+           python-wheel))
     (home-page "https://github.com/ClickHouse/clickhouse-connect";)
     (synopsis
      "ClickHouse database core driver for Python, Pandas, and Superset")
@@ -5784,7 +5813,7 @@ well-tested and interoperable CLIs for handling GeoJSON.")
                 "05c6cjpnf9s72gyn5dckxbmd8rf2kgdzfsl7pqzrnc1lcdl13zmv"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-click))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/janLuke/cloup";)
     (synopsis "Extension library for python-click")
     (description
@@ -5912,7 +5941,8 @@ and convert DDL to BigQuery JSON schema.")
               (when tests?
                 (setenv "JSON_SCHEMA_TEST_SUITE" "json")
                 (invoke "trial" "jsonschema")))))))
-    (native-inputs (list python-setuptools-scm python-twisted))
+    (native-inputs (list python-setuptools-scm python-twisted
+                         python-setuptools python-wheel))
     (propagated-inputs
      (list python-attrs
            python-importlib-metadata
@@ -6115,7 +6145,9 @@ memory usage and transliteration quality.")
            python-cryptography
            python-pytest
            python-sphinx
-           python-sphinx-rtd-theme))
+           python-sphinx-rtd-theme
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/progrium/pyjwt";)
     (synopsis "JSON Web Token implementation in Python")
     (description
@@ -6362,7 +6394,7 @@ work on your part.")
                (base32
                 "17f55gi55rg47nm88fn3f8851ph03dgykdp011lxr3j6hk18lyfv"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/tsutsu3/uc.micro-py";)
     (synopsis "Unicode data files for linkify-it-py projects")
     (description "This package contains a micro subset of Unicode data files
@@ -6384,7 +6416,7 @@ for linkify-it-py projects.")
                 "0fg0a1lc8xbb62y9krxcp708ll58dxcwm8i7rrwpkd5sh2229f6x"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-uc-micro-py))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/tsutsu3/linkify-it-py";)
     (synopsis "Links recognition library with full Unicode support")
     (description "This is Python port of
@@ -6409,7 +6441,7 @@ recognition library with full Unicode support.  It has 
features like:
                 "19a8dga8rnmjn5gy1cy1wdi28swbkdkypwbqikbxil6ynqcg3c20"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest python-setuptools-scm))
+     (list python-pytest python-setuptools python-setuptools-scm python-wheel))
     (home-page "https://github.com/smarie/python-makefun";)
     (synopsis "Library to dynamically create python functions")
     (description "@code{makefun} helps create functions dynamically with a
@@ -7087,8 +7119,8 @@ via commands such as @command{rst2man}, as well as 
supporting Python code.")
      (list behave
            python-pyparsing
            python-pytest
-           python-pytest-cov
-           python-pytest-xdist))
+           python-setuptools
+           python-wheel))
     (propagated-inputs
      (list python-lxml python-typing-extensions))
     (home-page "https://github.com/python-openxml/python-docx/";)
@@ -7231,7 +7263,7 @@ with Python.")
       ;; basic tests.
       '(list "--ignore-glob=tests/*/*")))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://pygments.org/";)
     (synopsis "Syntax highlighting")
     (description
@@ -7286,6 +7318,7 @@ working with Valve's VDF text format.")
                (base32
                 "1qm4xdmzd4q5pc9h5gjdpr5m7lg06k8dvqnjn7d07d3fhani8d90"))))
     (build-system pyproject-build-system)
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/mina86/pygtrie";)
     (synopsis "Pure Python trie data structure implementation")
     (description
@@ -8984,7 +9017,7 @@ readable format.")
         (base32 "1v34xdvh6i5cn5srwicvp0i2kvv8fzsv0v9p72ng081nsczmhgvr"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-cffi libgit2))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/libgit2/pygit2";)
     (synopsis "Python bindings for libgit2")
     (description "Pygit2 is a set of Python bindings to the libgit2 shared 
library.")
@@ -9197,7 +9230,9 @@ semantic version parser for Node.js.")
                (base32
                 "1r1lcq59v6l75wkbp7mypanr69a6fv6m58v6dw3v6b4vwz5nqg0z"))))
     (build-system pyproject-build-system)
-    (propagated-inputs (list python-appdirs python-nose python-pyyaml))
+    (propagated-inputs (list python-appdirs python-nose python-pyyaml
+                             python-setuptools))
+    (native-inputs (list python-wheel))
     (home-page "https://github.com/simonvh/norns";)
     (synopsis "Simple YAML-based config module")
     (description "This package provides a simple YAML-based config module.")
@@ -10192,7 +10227,7 @@ and therefore easier to read and write.")
               ;; NOTE: Any value works, the variable just has to be present.
               (setenv "SKIP_ONLINE" "1"))))))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (inputs
      (list bash-minimal))
     (home-page "https://github.com/pypa/distlib";)
@@ -10920,10 +10955,10 @@ from FFMPEG, reliably terminating the process when 
done.")
               (delete-file "tests/test_freeimage.py"))))))
     (inputs (list freeimage))
     (propagated-inputs
-     (list python-imageio-ffmpeg python-numpy python-pillow python-tifffile))
+     (list python-imageio-ffmpeg python-numpy python-pillow python-tifffile 
python-setuptools))
     (native-inputs
      (list python-black python-flake8 python-fsspec python-pytest
-           python-pytest-cov))
+           python-pytest-cov python-wheel))
     (home-page "https://imageio.github.io/";)
     (synopsis "Library for reading and writing a wide range of image data")
     (description
@@ -12139,7 +12174,9 @@ releases.")
                          python-pytest-cov
                          python-pytest-enabler
                          python-pytest-flake8
-                         python-pytest-mypy))
+                         python-pytest-mypy
+                         python-setuptools
+                         python-wheel))
     (home-page "https://github.com/jaraco/jaraco.test";)
     (synopsis "Testing support by jaraco")
     (description "This package provides testing support by jaraco.")
@@ -12587,6 +12624,7 @@ container data structures in Python).")
             python-pyzmq
             python-tornado-6
             python-traitlets))
+     (native-inputs (list python-setuptools python-wheel))
      (home-page "https://jupyter.org/";)
      (synopsis "Jupyter protocol implementation and client libraries")
      (description
@@ -12624,7 +12662,9 @@ installing @code{kernelspec}s for use with Jupyter 
frontends.")
              python-pytest-timeout
              python-async-generator
              python-ipython
-             python-ipykernel-bootstrap))
+             python-ipykernel-bootstrap
+             python-setuptools
+             python-wheel))
       (properties (alist-delete 'hidden? (package-properties base))))))
 
 (define-public python-ipykernel
@@ -12700,7 +12740,9 @@ installing @code{kernelspec}s for use with Jupyter 
frontends.")
            ;; and causes deprecation warnings.  Using the bootstrap variant
            ;; avoids that.
            python-pytest-bootstrap
-           python-pytest-timeout))
+           python-pytest-timeout
+           python-setuptools
+           python-wheel))
     (home-page "https://ipython.org";)
     (synopsis "IPython Kernel for Jupyter")
     (description "This package provides the IPython kernel for Jupyter.")
@@ -12719,7 +12761,7 @@ installing @code{kernelspec}s for use with Jupyter 
frontends.")
                          ;; left out here to break the cycle.
                          #:phases #~(modify-phases %standard-phases
                                       (delete 'sanity-check))))
-        (native-inputs '())
+        (native-inputs (list python-setuptools python-wheel))
         (propagated-inputs
          (modify-inputs (package-propagated-inputs parent)
            (replace "python-jupyter-client" python-jupyter-client-bootstrap)
@@ -12789,7 +12831,9 @@ callback signature using a prototype function.")
            python-unidecode))
     (native-inputs
      (list python-pytest
-           python-pytest-cov))
+           python-pytest-cov
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/titipata/pubmed_parser";)
     (synopsis "Parser for Pubmed Open-Access Subset and MEDLINE XML 
repository")
     (description
@@ -14162,6 +14206,7 @@ falling into the Python interpreter.")
                  "{ name = \"Maarten van der Sande\", email = 
\"maartenvandersande@hotmail.com\"}")
                 (("license = \"MIT\"") "license = { file = \"LICENSE\"}")))))))
     (propagated-inputs (list python-numba python-numpy python-pandas))
+    (native-inputs (list python-setuptools python-wheel python-toml))
     (home-page "https://github.com/Maarten-vd-Sande/qnorm";)
     (synopsis "Quantile normalization")
     (description "This tool implements quantile normalization. It properly
@@ -14222,7 +14267,9 @@ low-level X clients.  It is written entirely in 
Python.")
     (build-system pyproject-build-system)
     (native-inputs
      (list python-pytest
-           python-six)) ; required for conversion, not at run-time
+           python-setuptools
+           python-six ; required for conversion, not at run-time
+           python-wheel))
     (home-page
      
"https://docs.python.org/3/library/functools.html#functools.singledispatch";)
     (synopsis "Backport of singledispatch feature from Python 3.4")
@@ -14658,7 +14705,8 @@ plugin for flake8 to check PEP-8 naming conventions.")
          "0yvs59ymz5gdix34a95wxlxvk9bnvjgrzsnmnc3ws7whpfv3yasm"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-packaging))
-    (native-inputs (list python-pypa-build python-pytest python-tomli))
+    (native-inputs (list python-pypa-build python-pytest python-setuptools
+                         python-tomli python-wheel))
     (home-page "https://github.com/FFY00/python-pyproject-metadata";)
     (synopsis "Dataclass for PEP 621 metadata")
     (description "This project does not implement the parsing of
@@ -15473,7 +15521,8 @@ the @code{sendfile(2)} system call.")
     ;; Using Pytest instead of the Makefile causes the command line tests to
     ;; fail on unknown Pytest arguments.
     (arguments (list #:test-flags #~(list "-k" "not TestCommandLineParser")))
-    (native-inputs (list python-psutil python-pytest))
+    (native-inputs (list python-psutil python-pytest python-setuptools
+                         python-wheel))
     (propagated-inputs (list python-pyopenssl python-pysendfile))
     (home-page "https://github.com/giampaolo/pyftpdlib/";)
     (synopsis "Asynchronous and scalable Python FTP server library")
@@ -16264,7 +16313,8 @@ asyncio.")
                 "0yv1wayrw9g6k0c2f721kha7wsv0s1fdlxpf5x7f34iqzq9z272h"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-numpy python-pyparsing))
-    (native-inputs (list python-hypothesis python-pytest))
+    (native-inputs (list python-hypothesis python-pytest python-setuptools
+                         python-wheel))
     (home-page "https://github.com/mapbox/snuggs";)
     (synopsis "Snuggs are S-expressions for Numpy")
     (description "Snuggs are S-expressions for Numpy.")
@@ -16751,7 +16801,7 @@ domains support.")
      (build-system pyproject-build-system)
      (arguments
       (list #:tests? #f))
-     (native-inputs (list python-setuptools-scm))
+     (native-inputs (list python-setuptools python-setuptools-scm 
python-wheel))
      (home-page "https://github.com/jaraco/path";)
      (synopsis "Object-oriented file system path manipulation library")
      (description "@code{path} (formerly @code{path.py}) implements path
@@ -17382,7 +17432,9 @@ significantly better performance.")
            python-pylint
            python-pytest
            python-pytest-benchmark
-           python-pytest-cache))
+           python-pytest-cache
+           python-setuptools
+           python-wheel))
     (home-page
      "https://github.com/horejsek/python-fastjsonschema";)
     (synopsis
@@ -17465,7 +17517,7 @@ systems, as a command line tool, and as a Python 
library.")
             (delete-file-recursively "bleach/_vendor/html5lib")))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-html5lib python-tinycss2))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/mozilla/bleach";)
     (synopsis "Whitelist-based HTML-sanitizing tool")
     (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
@@ -18001,7 +18053,7 @@ simulation, statistical modeling, machine learning and 
much more.")
         (base32
          "1r9ixxnish9j3dq4h0z0cwlkr4f5lgi6d8mhbzw59hbbjlmp2qhd"))))
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (build-system pyproject-build-system)
     (arguments
      (list #:test-flags
@@ -18215,7 +18267,7 @@ This allows one to make simple text-mode user 
interfaces on Unix-like systems")
     (build-system pyproject-build-system)
     (propagated-inputs (list python-pydantic python-srsly
                              python-typing-extensions))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/explosion/confection";)
     (synopsis "Config system for Python")
     (description "Confection is a lightweight library that offers a
@@ -18282,7 +18334,8 @@ config files.")
     (propagated-inputs (list java-antlr4-runtime-python
                              python-pydevd
                              python-pyyaml))
-    (native-inputs (list icedtea antlr4 python-pytest python-pytest-mock))
+    (native-inputs (list icedtea antlr4 python-pytest python-pytest-mock
+                         python-setuptools python-wheel))
     (home-page "https://github.com/omry/omegaconf";)
     (synopsis "Flexible configuration system")
     (description "OmegaConf is a hierarchical configuration system and
@@ -18301,10 +18354,10 @@ consistent API regardless of how the configuration 
was created.")
                (base32
                 "1l866g1dcf2ljf8fl7ggpxk1rggry0lya4d5b264gradi1qp81p7"))))
     (build-system pyproject-build-system)
-    (native-inputs
-     (list python-mock python-pytest))
     (propagated-inputs
      (list python-pyyaml))
+    (native-inputs
+     (list python-mock python-pytest python-setuptools python-wheel))
     (synopsis "Replacement for argparse")
     (description "A drop-in replacement for argparse that allows options to 
also
 be set via config files and/or environment variables.")
@@ -19433,6 +19486,7 @@ in pure Python.")
                (base32
                 "14hwk9j5zjc8rvirw95mrb07zdnpjaxjx2mj3rnq8pnlyaa809r4"))))
     (build-system pyproject-build-system)
+    (arguments (list #:tests? #f)) ; No tests in PyPi tarball.
     (native-inputs
      (list python-poetry-core))
     (home-page "https://github.com/srstevenson/xdg-base-dirs";)
@@ -19949,7 +20003,8 @@ synchronously (wait until ready).")
            python-scikit-learn
            python-scipy
            python-toolz))
-    (native-inputs (list python-cython python-pytest python-setuptools-scm))
+    (native-inputs (list python-cython python-pytest python-setuptools-scm
+                         python-setuptools python-wheel))
     (home-page "https://pypi.org/project/cesium/";)
     (synopsis "Library for time-series feature extraction and processing")
     (description
@@ -20026,7 +20081,8 @@ ISO 8859, etc.).")
                  (lambda _
                    (setenv "QT_QPA_PLATFORM" "offscreen"))))))
     (native-inputs
-     (list python-pytest python-pytest-cov python-pytest-xdist))
+     (list python-pytest python-pytest-cov python-pytest-xdist
+           python-setuptools python-wheel))
     (inputs
      (list qtbase-5))
     (propagated-inputs
@@ -20214,7 +20270,9 @@ checking library.")
             python-pytest
             python-pytest-cov
             python-pytest-dependency
-            python-tomli))
+            python-tomli
+            python-setuptools
+            python-wheel))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -21329,7 +21387,9 @@ def get_requires_for_build_sdist(config_settings=None):
                          python-pytest-flake8
                          python-pytest-mypy
                          ;; For the version number
-                         python-setuptools-scm))
+                         python-setuptools-scm
+                         python-setuptools
+                         python-wheel))
     (home-page "https://github.com/jaraco/inflect";)
     (synopsis "Correctly generate plurals, singular nouns, ordinals, 
indefinite articles")
     (description
@@ -23601,7 +23661,8 @@ JPEG2000 and GIF files in pure Python.")
     (propagated-inputs
      (list pigz python-isal python-typing-extensions))
     (native-inputs
-     (list python-pytest python-pytest-timeout python-setuptools-scm))
+     (list python-pytest python-pytest-timeout python-setuptools-scm
+           python-setuptools python-wheel))
     (home-page "https://github.com/marcelm/xopen/";)
     (synopsis "Open compressed files transparently")
     (description "This module provides an @code{xopen} function that works
@@ -23685,6 +23746,7 @@ efficient as possible on all supported Python 
versions.")
                 "1gqfh00ics2k1sm5g46l3bi8cl5fc5d1cwzh1ylvcxvdvypklqc7"))))
     (build-system pyproject-build-system)
     (arguments (list #:tests? #false)) ;there are none
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/noahmorrison/chevron";)
     (synopsis "Mustache templating language renderer")
     (description "This package provides a Python implementation of the
@@ -23747,7 +23809,9 @@ Mustache templating language renderer.")
            python-pyarrow
            python-pytest
            python-pytest-runner
-           python-setuptools-scm))
+           python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (home-page "https://www.duckdb.org";)
     (synopsis "DuckDB embedded database")
     (description "DuckDB is an in-process SQL OLAP database management
@@ -24668,6 +24732,7 @@ point is the point of maximum curvature.")
            python-jinja2
            python-pluggy
            python-pygments
+           python-setuptools ; For pkg_resources.
            python-tomli))
     (native-inputs
      (list python-flake8
@@ -24882,7 +24947,8 @@ while only declaring the test-specific fields.")
      ;; Disable tests that require internet.
      (list #:test-flags '(list "-k" "not net")))
     (native-inputs
-     (list python-pytest python-testfixtures python-click python-requests))
+     (list python-pytest python-testfixtures python-click python-requests
+           python-setuptools python-wheel))
     (home-page "https://github.com/pndurette/gTTS";)
     (synopsis "Google Translate text-to-speech interface")
     (description
@@ -25413,7 +25479,9 @@ manipulation, or @code{stdout}.")
            python-mypy
            python-pytest
            python-pytz
-           python-simplejson))
+           python-simplejson
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/marshmallow-code/marshmallow";)
     (synopsis "Convert complex datatypes to and from native Python datatypes")
     (description "@code{marshmallow} provides a library for converting complex
@@ -25475,7 +25543,9 @@ datatypes to and from native Python datatypes.")
            python-marshmallow
            python-mypy
            python-pytest
-           python-pyyaml))
+           python-pyyaml
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/marshmallow-code/apispec";)
     (synopsis "Swagger/OpenAPI specification generator")
     (description "@code{python-apispec} is a pluggable API specification
@@ -25494,7 +25564,7 @@ Swagger.")
                (base32
                 "1wyw30402xq2a8icrsjmy9v43jyvawcjd85ccb2zicqlg4k5pcqd"))))
     (build-system pyproject-build-system)
-    (propagated-inputs (list python-apispec))
+    (propagated-inputs (list python-apispec python-setuptools))
     (native-inputs
      (list python-bottle
            python-flake8
@@ -25504,7 +25574,8 @@ Swagger.")
            python-pytest
            python-pyyaml
            python-tornado
-           python-tox))
+           python-tox
+           python-wheel))
     (home-page "https://github.com/marshmallow-code/apispec-webframeworks";)
     (synopsis "Web framework plugins for apispec")
     (description "This package provides plugins for using @code{apispec} with
@@ -26224,7 +26295,9 @@ particularly convenient for use in tests.")
            python-pytest-mypy
            python-setuptools-scm
            python-types-freezegun
-           python-types-pytz))
+           python-types-pytz
+           python-setuptools
+           python-wheel))
     (propagated-inputs (list python-jaraco-functools python-pytz))
     (home-page "https://github.com/jaraco/tempora";)
     (synopsis "Python date and time objects and routines")
@@ -26348,7 +26421,9 @@ queue.")
      (list python-pytest
            python-pytest-asyncio
            python-pytest-repeat
-           python-pytest-timeout))
+           python-pytest-timeout
+           python-setuptools
+           python-wheel))
     (home-page "https://zict.readthedocs.io/en/latest/";)
     (synopsis "Composable mutable mapping tools")
     (description "This package provides abstract @code{MutableMapping} classes
@@ -26538,7 +26613,7 @@ files, and Makefiles.")
         (base32 "1q7ajgqjfivxqsqgnhp4lc4p6jxyh4zprcsdbpd6dw54inaf0av5"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/Suor/whatever";)
     (synopsis "Make anonymous functions by partial application of operators")
     (description "@code{whatever} provides an easy way to make anonymous
@@ -26560,7 +26635,7 @@ functions by partial application of operators.")
        (file-name (git-file-name name version))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest python-whatever))
+     (list python-pytest python-whatever python-setuptools python-wheel))
     (home-page "https://github.com/Suor/funcy";)
     (synopsis "Functional tools")
     (description "@code{funcy} is a library that provides functional tools.
@@ -27039,7 +27114,7 @@ working with iterables.")
                 "040i6bjqvl33j30v865shsk30s3h7f16pqwiaj5kig857dfmqm4r"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-bitarray python-xxhash))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/joseph-fox/python-bloomfilter";)
     (synopsis "Bloom filter")
     (description "This package provides a scalable Bloom filter implemented in
@@ -28204,7 +28279,8 @@ tool).")
            python-msgpack
            python-typing-extensions))
     (native-inputs
-     (list python-cython python-pytest python-setuptools-scm))
+     (list python-cython python-pytest python-setuptools-scm
+           python-setuptools python-wheel))
     (home-page "https://github.com/zarr-developers/numcodecs";)
     (synopsis "Buffer compression and transformation codecs")
     (description
@@ -28330,6 +28406,7 @@ N-dimensional arrays for Python.")
            python-pandas
            python-scipy
            python-scikit-learn
+           python-setuptools ; For pkg_resources.
            python-zarr))
     (native-inputs
      (list python-awkward
@@ -28376,7 +28453,7 @@ object-oriented library such as @code{scikit-learn}.")
                (with-directory-excursion "/tmp"
                  (invoke "nosetests" "-v"))))))))
     (native-inputs
-     (list python-nose))
+     (list python-nose python-setuptools python-wheel))
     (home-page "https://pypi.org/project/dill/";)
     (synopsis "Serialize all of Python")
     (description "Dill extends Python's @code{pickle} module for serializing
@@ -28428,6 +28505,7 @@ preload_resources\
                (invoke "python" "-m" "multiprocess.tests")))))))
     (propagated-inputs
      (list python-dill))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://pypi.org/project/multiprocess/";)
     (synopsis "Multiprocessing and multithreading in Python")
     (description
@@ -28740,7 +28818,8 @@ append on old values.  Partd excels at shuffling 
operations.")
     (propagated-inputs
      (list python-aiohttp python-libarchive-c python-requests python-tqdm))
     (native-inputs
-     (list python-pytest python-pytest-mock python-numpy))
+     (list python-pytest python-pytest-mock python-numpy python-setuptools
+           python-wheel))
     (home-page "https://github.com/intake/filesystem_spec";)
     (synopsis "File-system specification")
     (description "The purpose of this package is to produce a template or
@@ -29051,6 +29130,7 @@ RFC 8265 and RFC 8266.")
         (base32
          "0ga3b0m8lfsv1m3260p83lhis52yvz3d42q8gip4gfj823849hnj"))))
     (build-system pyproject-build-system)
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/abseil/abseil-py";)
     (synopsis "Abseil Python common libraries")
     (description
@@ -29355,7 +29435,8 @@ programs that do multiple things at the same time with 
parallelized I/O.")
        (sha256
         (base32 "15wa66cs165wawh4pi808ac43n67b8jqddi5ppdcbkj5gfi68hpi"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-attrs python-pytest))
+    (native-inputs (list python-attrs python-pytest python-setuptools
+                         python-wheel))
     (propagated-inputs
      (list python-mypy python-mypy-extensions python-trio
            python-typing-extensions))
@@ -30609,7 +30690,7 @@ scripts to load entry points more quickly.")
              (when tests?
                (invoke "python" "-m" "unittest" "discover" "-v")))))))
     ;; ModuleNotFoundError: No module named 'poetry'
-    (native-inputs (list python-poetry-core))
+    (native-inputs (list python-poetry-core python-six))
     (home-page "https://github.com/vlasovskikh/funcparserlib";)
     (synopsis
      "Recursive descent parsing library based on functional combinators")
@@ -30885,7 +30966,9 @@ but portable.")
            python-pytest-cov
            python-pytest-mock
            python-pytest-sugar
-           python-pytest-toolbox))
+           python-pytest-toolbox
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/samuelcolvin/watchgod";)
     (synopsis "Simple, modern file watching and code reload in Python")
     (description
@@ -32223,7 +32306,7 @@ placement and scaling of SVG figures and adding 
markers, such as labels.")
       ;; Avoid python-pytest-coverage
       #:test-flags '(list "-c /dev/null")))
     (propagated-inputs (list python-six python-wcwidth))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/jquast/blessed";)
     (synopsis "Wrapper around terminal capabilities")
     (description
@@ -32498,7 +32581,8 @@ It adds a simple and readable way to print stuff during 
development.")
      (list python-dateutil python-pytz python-regex python-ruamel.yaml
            python-tzlocal))
     (native-inputs
-     (list python-flake8 python-pytest python-parameterized tzdata-for-tests))
+     (list python-flake8 python-pytest python-parameterized tzdata-for-tests
+           python-setuptools python-wheel))
     (arguments
      `(#:phases
        (modify-phases %standard-phases
@@ -33398,7 +33482,9 @@ older versions of Python and so are packaged here.")
                          python-sphinx
                          python-sphinx-autobuild
                          python-sphinx-rtd-theme
-                         python-tox))
+                         python-tox
+                         python-setuptools
+                         python-wheel))
     (home-page "https://github.com/Delgan/loguru";)
     (synopsis "Python logging made (stupidly) simple")
     (description "Python logging made (stupidly) simple")
@@ -36053,6 +36139,7 @@ Python, with static types.")
                 "0cas3cjkhrvsz2rmqnhqiihy9j79wxi9xbih8jk0p9r48c2q3iyy"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-types-urllib3))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/python/typeshed";)
     (synopsis "Typing stubs for requests")
     (description "This package provides typing stubs for requests.")
@@ -36085,6 +36172,7 @@ Python, with static types.")
                (base32
                 "0zcipjdnbnc8ymk8mh9n5mypa0qr03rqj98lbmahldcdrrap6md1"))))
     (build-system pyproject-build-system)
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/python/typeshed";)
     (synopsis "Typing stubs for urllib3")
     (description "This package provides typing stubs for urllib3.")
@@ -36102,6 +36190,7 @@ Python, with static types.")
                 "1vdwp1jjg27b22qxgm49v21nb8vm1iki3bfsm0fnq2rsz5alfwz2"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-importlib-resources))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/JelleZijlstra/typeshed_client";)
     (synopsis "Library for accessing stubs in typeshed")
     (description
@@ -36518,7 +36607,9 @@ than trying to just split strings.")
            python-pytest-timeout
            python-mock
            python-numpy
-           python-psutil))
+           python-psutil
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/explosion/srsly";)
     (synopsis "Serialization utilities for Python")
     (description "This package bundles some of the best Python serialization
@@ -36770,7 +36861,7 @@ objects.")
                (base32 
"1irw4sqrsgpc0ibxdv1hlx0d0jr1fqs48bj6mpfylzqkag9ywlfj"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list python-pytest))
+     (list python-pytest python-setuptools python-wheel))
     (home-page "https://github.com/cgdeboer/iteround";)
     (synopsis "Sum-safe rounding for Iterables")
     (description "Iteround is a standard library sum-safe rounding library for
@@ -36884,7 +36975,10 @@ object, which can be useful if you want to force your 
objects into a table.")
            python-mock
            python-numpy
            python-pytest
-           python-pyyaml))
+           python-pyyaml
+           python-setuptools
+           python-wheel
+           python-toml))
     (home-page "https://github.com/seperman/deepdiff";)
     (synopsis "Deep difference and search of any Python object/data")
     (description
@@ -36913,7 +37007,9 @@ other.")
               (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version))))))
     (native-inputs
      (list python-setuptools-scm
-           python-pytest))
+           python-pytest
+           python-setuptools
+           python-wheel))
     (home-page "https://deepmerge.readthedocs.io/en/latest/";)
     (synopsis "Merge nested data structures")
     (description
@@ -37365,7 +37461,7 @@ versa.  Extended WKB/WKT are also supported.")
                (base32
                 "1c0xx3p3lzrlyqhmccyq9c50f8v9pqk2992gb4nl50h2yy1m3s8v"))))
     (build-system pyproject-build-system)
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (home-page "https://nedbatchelder.com/code/cog";)
     (synopsis "Content generation tool that leverages Python")
     (description "Cog is a file generation tool.  It allows using pieces of
@@ -37806,7 +37902,10 @@ path.")
            python-ruamel.yaml
            python-slugify
            python-tornado
-           tzdata-for-tests))
+           tzdata-for-tests
+           python-setuptools
+           python-wheel
+           python-toml))
     (home-page "https://github.com/spanezz/staticsite";)
     (synopsis "Static site generator")
     (description "Statistic is a static site generator based on Markdown and
@@ -37899,8 +37998,9 @@ markdown-compliant strings.")
                (base32
                 "1v5c9bim8af6g8kgxp2dhm96n5vkr8sqi56w0bdh1xy49v03lw3g"))))
     (build-system pyproject-build-system)
-    (propagated-inputs (list python-pillow))
+    (propagated-inputs (list python-pillow python-setuptools))
     (inputs (list zbar))
+    (native-inputs (list python-wheel))
     (home-page "https://github.com/Polyconseil/zbarlight";)
     (synopsis "Simple Python wrapper for the zbar barcode library")
     (description "Zbarlight is a simple wrapper for the zbar library.  It can
@@ -37919,6 +38019,7 @@ read all zbar supported codes.")
                 "0bqkrjxp2fbz34x3wxkxji39kxinypzg8q2994sibiay29mpipxb"))))
     (build-system pyproject-build-system)
     (inputs (list openssl))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://zeroc.com";)
     (synopsis "RPC framework")
     (description
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 687c20cd90..169010c1cd 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -3900,7 +3900,9 @@ Python.")
      (list python-wrapper))
     (propagated-inputs
      (list python-tomli
-           python-packaging))
+           python-packaging
+           python-setuptools
+           python-wheel))
     (home-page "https://www.riverbankcomputing.com/software/sip/intro";)
     (synopsis "Python binding creator for C and C++ libraries")
     (description
diff --git a/gnu/packages/rpc.scm b/gnu/packages/rpc.scm
index b70214fa79..e7d19b1ef2 100644
--- a/gnu/packages/rpc.scm
+++ b/gnu/packages/rpc.scm
@@ -254,7 +254,7 @@ type information of gRPC.")
     (inputs
      (list abseil-cpp-20211102.0 c-ares grpc-for-python-grpcio openssl re2 
zlib))
     (native-inputs
-     (list python-cython))
+     (list python-cython python-setuptools python-wheel))
     (propagated-inputs
      (list python-six))
     (home-page "https://grpc.io";)
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index 6a4368d59a..80dee15726 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -746,7 +746,9 @@ RPC system.  Think JSON, except binary.  Or think Protocol 
Buffers, except faste
                          python-mypy
                          python-pytest
                          python-setuptools-scm
-                         python-versioneer))
+                         python-versioneer
+                         python-setuptools
+                         python-wheel))
     (propagated-inputs (list python-pyyaml python-tomli python-tomli-w))
     (home-page "https://jcristharif.com/msgspec/";)
     (synopsis "Fast serialization/validation library")
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index 44cd036e4b..f5b65a531a 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -453,7 +453,9 @@ supported with @code{sphinx-issues}.")
     (propagated-inputs (list python-docutils-0.15 python-sphinx-4))
     (native-inputs
      (list python-pytest
-           python-pytest-regressions))
+           python-pytest-regressions
+           python-setuptools
+           python-wheel))
     (home-page "https://github.com/executablebooks/sphinx-panels";)
     (synopsis "Sphinx extension for creating panels in a grid layout")
     (description
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 7089030fcc..e0af1a392d 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -2098,7 +2098,7 @@ and fast file reading.")
                  ;; Remove dataset with unclear license.
                  (lambda _
                    (delete-file "vega_datasets/_data/la-riots.csv"))))))
-    (native-inputs (list python-pytest))
+    (native-inputs (list python-pytest python-setuptools python-wheel))
     (propagated-inputs (list python-pandas))
     (home-page "https://github.com/altair-viz/vega_datasets";)
     (synopsis "Example datasets used by Vega-related projects")
@@ -2143,6 +2143,7 @@ and Vega-Lite examples.")
                              python-jsonschema
                              python-numpy
                              python-pandas
+                             python-setuptools
                              python-toolz
                              python-typing-extensions))
     (native-inputs (list python-black
@@ -2202,7 +2203,8 @@ correlated samples from Markov Chain Monte Carlo (MCMC).")
            (lambda _
              ;; Cython extensions have to be built before running the tests.
              (invoke "python" "setup.py" "build_ext" "--inplace"))))))
-    (propagated-inputs (list python-cython python-numpy))
+    (propagated-inputs (list python-cython python-numpy python-setuptools
+                             python-wheel))
     (native-inputs (list python-nose))
     (home-page "http://github.com/daleroberts/hdmedians";)
     (synopsis "High-dimensional medians")
@@ -2253,7 +2255,9 @@ machine learning, computer vision, and high-dimensional 
statistics.")
                              python-scipy
                              python-typing-extensions
                              python-xarray
-                             python-xarray-einstats))
+                             python-xarray-einstats
+                             python-setuptools
+                             python-wheel))
     (home-page "https://github.com/arviz-devs/arviz";)
     (synopsis "Exploratory analysis of Bayesian models")
     (description
@@ -2518,7 +2522,9 @@ sampler for Markov chain Monte Carlo (MCMC).")
            python-pytest
            python-pytest-randomly
            python-pytest-xdist
-           python-setuptools-scm))
+           python-setuptools-scm
+           python-setuptools
+           python-wheel))
     (home-page
      (string-append "https://www.statsmodels.org/v"; version "/"))
     (synopsis "Statistical modeling and econometrics in Python")
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index fbfc4439db..4effb8aff7 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -114,6 +114,7 @@
   #:use-module (gnu packages popt)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages qt)
@@ -254,8 +255,8 @@ managers.")
                    (substitute* "tests/pty_test.py"
                      (("python3") (search-input-file inputs 
"/bin/python3"))))))))
     (native-inputs
-     ;; For tests.
-     (list python-pytest))
+     (list python-pytest ; For tests.
+           python-setuptools python-wheel))
     (home-page "https://asciinema.org";)
     (synopsis "Terminal session recorder")
     (description
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index dce37f3df4..cb89d04bf5 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -285,6 +285,7 @@ datetime module, available in Python 2.3+.")
                 "1wg3f3imjq3snvjccv64h5498pqv9xz664xhni7bsh8mnay91p83"))))
     (build-system pyproject-build-system)
     (propagated-inputs (list python-dateutil python-pytz))
+    (native-inputs (list python-setuptools python-wheel))
     (home-page "https://github.com/jmcantrell/python-dateutils";)
     (synopsis "Various utilities for working with date and datetime objects")
     (description
@@ -368,7 +369,7 @@ Python datetime objects.")
       ;; It's optional, remove this constrain where python-pytz is updated.
       #:test-flags #~(list "-k" "not test_with_pytz")))
     (native-inputs
-     (list python-poetry-core python-pytest))
+     (list python-poetry-core python-pytest python-setuptools))
     (propagated-inputs
      (list python-cffi python-h3-3 python-numba python-numpy python-pytz))
     (home-page "https://timezonefinder.michelfe.it/gui";)
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index ab1483245f..0b3818e3cc 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -50,6 +50,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
@@ -447,7 +448,8 @@ Potential client and exit connections are scrubbed of 
sensitive information.")
          "1542g6alycwlmvndxcijzn4d5lgycmxxb78gqd8qwgm9kw0fnr3q"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list (list glib "bin")))       ; for glib-compile-schemas.
+     (list python-setuptools python-wheel
+           (list glib "bin")))       ; for glib-compile-schemas.
     (inputs
      (list python-fire
            python-psutil
diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm
index 2f6e6809d7..8f5bcb8827 100644
--- a/gnu/packages/tree-sitter.scm
+++ b/gnu/packages/tree-sitter.scm
@@ -32,6 +32,7 @@
   #:use-module (gnu packages graphviz)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages node)
+  #:use-module (gnu packages python-build)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system pyproject)
@@ -89,7 +90,8 @@
                     name)))))))))
     (inputs (list tree-sitter))
     (native-inputs
-     (list tree-sitter-python tree-sitter-javascript))
+     (list tree-sitter-python tree-sitter-javascript
+           python-setuptools python-wheel))
     (home-page "https://github.com/tree-sitter/py-tree-sitter";)
     (synopsis "Python bindings to the Tree-sitter parsing library")
     (description "This package provides Python bindings to the
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 92c0acef3c..6f789ee248 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -6155,7 +6155,7 @@ video from a Wayland session.")
                 "1z9j3r9pm4rdynlmhgsgnwnnaqw5274yfy4kyillgd77msnpbhaw"))))
     (build-system pyproject-build-system)
     (native-inputs
-     (list gettext-minimal pkg-config))
+     (list gettext-minimal pkg-config python-setuptools python-wheel))
     (inputs
      (list bash-minimal
            python-pygobject
diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm
index a7f07ec0f6..4c8de9fa32 100644
--- a/gnu/packages/vim.scm
+++ b/gnu/packages/vim.scm
@@ -72,6 +72,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages serialization)
@@ -1026,7 +1027,12 @@ through its msgpack-rpc API.")
                (base32
                 "00kxlb3f1k7iaxzpsr07scavmnyg8c1jmicmr13mfk2lcdac6g2b"))))
     (build-system pyproject-build-system)
-    (propagated-inputs (list python-psutil python-pynvim))
+    (native-inputs
+     (list python-wheel))
+    (propagated-inputs
+     (list python-psutil
+           python-pynvim
+           python-setuptools))
     (home-page "https://github.com/mhinz/neovim-remote";)
     (synopsis "Control nvim processes using `nvr` commandline tool")
     (description "This package provide a `nvr` command, which can open File in
diff --git a/guix/build-system/pyproject.scm b/guix/build-system/pyproject.scm
index 9a27ebee35..28fd897494 100644
--- a/guix/build-system/pyproject.scm
+++ b/guix/build-system/pyproject.scm
@@ -52,7 +52,12 @@
   "Return the default Python package."
   ;; Lazily resolve the binding to avoid a circular dependency.
   (let ((python (resolve-interface '(gnu packages python))))
-    (module-ref python 'python-toolchain)))
+    ;; We are using python-sans-pip-wrapper, because it does not contain
+    ;; setuptools. This allows us to skip the dependency on setuptools for
+    ;; packages which don’t need it. And it allows us to more easily swap
+    ;; out setuptools if a different version is required.
+    ;; Using python-toolchain here might cause dependency cycles.
+    (module-ref python 'python-sans-pip-wrapper)))
 
 (define sanity-check.py
   (search-auxiliary-file "python/sanity-check.py"))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]