guix_mirror_bot pushed a commit to branch python-team
in repository guix.
commit 070d2b6c4952a0a00e68d24f4c0ea768fc32d236
Author: Nicolas Graves <[email protected]>
AuthorDate: Sat Jan 24 17:07:10 2026 +0100
import: pypi: Fix tests.
* guix/import/pypi.scm (unzip-command): Use invoke instead of
system*.
(read-wheel-metadata): Adapt accordingly.
(guess-requirements-from-wheel): Improve readability.
* tests/import/pypi.scm (parse-wheel-metadata): Add test (used to
isolate the issue in another test).
(pypi->guix-package, no wheel): Remove python-wheel from the result.
(pypi->guix-package, no usable requirement file, no wheel.): Likewise.
(pypi->guix-package, package name contains \"-\" followed by digits):
Likewise.
(package-latest-release): Likewise.
(pypi->guix-package, no requires.txt, but wheel): Likewise. Also
improve readability.
Change-Id: I49e6ae549437a068acd85fa0f13471bc0af5a399
Signed-off-by: Sharlatan Hellseher <[email protected]>
---
guix/import/pypi.scm | 15 +++++++--------
tests/import/pypi.scm | 24 +++++++++++-------------
2 files changed, 18 insertions(+), 21 deletions(-)
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index 86766b5d3f..5cd4cd813d 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -303,8 +303,9 @@ not succeed."
(mlet* %store-monad
((drv (lower-object unzip))
(built (built-derivations (list drv))))
- (return (string-append (derivation->output-path drv)
"/bin/unzip"))))))))
- (system* (string-append unzip-cmd (string-join args " " 'prefix)))))
+ (return (string-append (derivation->output-path drv)
+ "/bin/unzip"))))))))
+ (apply invoke unzip-cmd args)))
(define (parse-requires.txt requires.txt)
"Given REQUIRES.TXT, a path to a Setuptools requires.txt file, return a list
@@ -414,10 +415,9 @@ be extracted in a temporary directory."
(metadata (string-append dirname "/METADATA")))
(call-with-temporary-directory
(lambda (dir)
- (if (zero?
- (parameterize ((current-error-port (%make-void-port "rw+"))
- (current-output-port (%make-void-port "rw+")))
- (unzip-command wheel-archive "-d" dir metadata)))
+ (if (parameterize ((current-error-port (%make-void-port "rw+"))
+ (current-output-port (%make-void-port "rw+")))
+ (unzip-command wheel-archive "-d" dir metadata))
(parse-wheel-metadata (string-append dir "/" metadata))
(begin
(warning
@@ -430,8 +430,7 @@ be extracted in a temporary directory."
(call-with-temporary-output-file
(lambda (temp port)
(if wheel-url
- (and (url-fetch wheel-url temp)
- (read-wheel-metadata temp))
+ (and=> (url-fetch wheel-url temp) read-wheel-metadata)
(list '() '())))))
(define (guess-requirements-from-pyproject.toml dir)
diff --git a/tests/import/pypi.scm b/tests/import/pypi.scm
index 8da15edcd9..c8f554934b 100644
--- a/tests/import/pypi.scm
+++ b/tests/import/pypi.scm
@@ -270,6 +270,12 @@ files specified by SPECS. Return its file name."
call-with-input-string)
(parse-requires.txt test-requires.txt-beaker)))
+(test-equal "parse-wheel-metadata"
+ (list '("baz" "bar") '("pytest"))
+ (mock ((ice-9 ports) call-with-input-file
+ call-with-input-string)
+ (parse-wheel-metadata test-metadata)))
+
(test-equal "parse-wheel-metadata, with extras"
(list '("wrapt" "bar") '("tox" "bumpversion"))
(mock ((ice-9 ports) call-with-input-file
@@ -328,8 +334,7 @@ files specified by SPECS. Return its file name."
(build-system pyproject-build-system)
(propagated-inputs (list python-bar python-foo))
(native-inputs (list python-pytest
- python-setuptools
- python-wheel))
+ python-setuptools))
(home-page "https://example.com")
(synopsis "summary")
(description "summary.")
@@ -431,8 +436,7 @@ files specified by SPECS. Return its file name."
(with-pypi `(("/foo-1.0.0.tar.gz" 200 ,(file-dump tarball))
("/foo-1.0.0-py2.py3-none-any.whl"
200 ,(file-dump wheel))
- ("/foo/json" 200 ,(lambda (port)
- (display (foo-json) port))))
+ ("/foo/json" 200 ,(cut display (foo-json) <>)))
;; Not clearing the memoization cache here would mean returning the value
;; computed in the previous test.
(invalidate-memoization! pypi->guix-package)
@@ -448,8 +452,7 @@ files specified by SPECS. Return its file name."
(build-system pyproject-build-system)
(propagated-inputs (list python-bar python-baz))
(native-inputs (list python-pytest
- python-setuptools
- python-wheel))
+ python-setuptools))
(home-page "https://example.com")
(synopsis "summary")
(description "summary.")
@@ -478,7 +481,7 @@ files specified by SPECS. Return its file name."
(sha256
(base32 ,(? string? hash)))))
(build-system pyproject-build-system)
- (native-inputs (list python-setuptools python-wheel))
+ (native-inputs (list python-setuptools))
(home-page "https://example.com")
(synopsis "summary")
(description "summary.")
@@ -509,8 +512,7 @@ files specified by SPECS. Return its file name."
(build-system pyproject-build-system)
(propagated-inputs (list python-bar python-foo))
(native-inputs (list python-pytest
- python-setuptools
- python-wheel))
+ python-setuptools))
(home-page "https://example.com")
(synopsis "summary")
(description "summary.")
@@ -537,10 +539,6 @@ files specified by SPECS. Return its file name."
(upstream-input
(name "setuptools")
(downstream-name "python-setuptools")
- (type 'native))
- (upstream-input
- (name "wheel")
- (downstream-name "python-wheel")
(type 'native))))
(let ((tarball (pypi-tarball
"foo-1.0.0"