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

commit c08328d030d3597c7b02a0cf73cd08867cad6150
Author: Nicolas Graves <[email protected]>
AuthorDate: Sat Jun 1 17:36:33 2024 +0200

    import: pypi: Ignore pypi-ignored-inputs.
    
    * guix/import/pypi.scm (pypi-ignored-inputs): New variable.
      (compute-inputs): Use it.
    
    * tests/pypi.scm (parse-requires.txt): Add ignored input to test the
      feature.
    
    * guix/lint.scm (check-inputs-should-be-native): Adapt list.
      (check-inputs-should-not-be-an-input-at-all): Use pypi-ignored-list.
    
    Change-Id: I297793b71f9ffdfbe7cc4e883777f8823941adf0
    Signed-off-by: Sharlatan Hellseher <[email protected]>
---
 guix/import/pypi.scm  | 26 ++++++++++++++++++++------
 guix/lint.scm         | 14 ++++++++------
 tests/import/pypi.scm |  3 ++-
 3 files changed, 30 insertions(+), 13 deletions(-)

diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index b451fb9387..357b3920c4 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2022 Vivien Kraus <[email protected]>
 ;;; Copyright © 2021 Simon Tournier <[email protected]>
 ;;; Copyright © 2022 Hartmut Goebel <[email protected]>
+;;; Copyright © 2024 Nicolas Graves <[email protected]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -68,6 +69,7 @@
   #:use-module (guix upstream)
   #:use-module ((guix licenses) #:prefix license:)
   #:export (%pypi-base-url
+            pypi-ignored-inputs
             parse-requires.txt
             parse-wheel-metadata
             specification->requirement-name
@@ -84,6 +86,18 @@
   ;; Base URL of the PyPI API.
   (make-parameter "https://pypi.org/pypi/";))
 
+(define pypi-ignored-inputs
+  ;; This list contains packages that are useful for development or quality
+  ;; testing, but that most of the time are not necessary to have as an input.
+  (list "argparse" "wheel"  ; native
+        "tox" ; test wrapper for other environments
+        "codecov" "coverage"  ; coverage
+        "black" "isort" "pycodestyle" "pep8"  ; style
+        "check-manifest" "pyflakes" "flake8" "pylint" "mypy"  ; style+lint
+        "coveralls" "twine"  ; upload integration tools
+        "pytest-isort" "pytest-flake8" "pytest-cov" "pytest-black"
+        "pytest-pep8" "pytest-mypy" "pytest-pep8" "pre-commit"))  ; variants
+
 (define non-empty-string-or-false
   (match-lambda
     ("" #f)
@@ -499,12 +513,12 @@ cannot determine package dependencies from source 
archive: ~a~%")
   "Given the SOURCE-URL and WHEEL-URL of an already downloaded ARCHIVE, return
 the corresponding list of <upstream-input> records."
   (define (requirements->upstream-inputs deps type)
-    (filter-map (match-lambda
-                  ("argparse" #f)
-                  (name (upstream-input
-                         (name name)
-                         (downstream-name (python->package-name name))
-                         (type type))))
+    (filter-map (lambda (name)
+                  (and (not (member name pypi-ignored-inputs))
+                       (upstream-input
+                        (name name)
+                        (downstream-name (python->package-name name))
+                        (type type))))
                 (sort deps string-ci<?)))
 
   (define (add-missing-native-inputs inputs)
diff --git a/guix/lint.scm b/guix/lint.scm
index 19be149d2f..57d7dd2ff2 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -73,6 +73,7 @@
                                     hg-reference-url)
   #:autoload   (guix bzr-download) (bzr-reference?
                                     bzr-reference-url)
+  #:use-module ((guix import pypi) #:select (pypi-ignored-inputs))
   #:use-module (guix import stackage)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
@@ -602,14 +603,12 @@ of a package, and INPUT-NAMES, a list of package 
specifications such as
             "m4"
             "qttools-5"
             "yasm" "nasm" "fasm"
-            "python-coverage"
             "python-cython"
             "python-docutils"
             "python-mock"
             "python-nose"
             "python-pbr"
             "python-pytest"
-            "python-pytest-cov"
             "python-setuptools-scm"
             "python-sphinx"
             "scdoc"
@@ -631,10 +630,13 @@ of a package, and INPUT-NAMES, a list of package 
specifications such as
 (define (check-inputs-should-not-be-an-input-at-all package)
   ;; Emit a warning if some inputs of PACKAGE are likely to should not be
   ;; an input at all.
-  (let ((input-names '("python-pip"
-                       "python-pre-commit"
-                       "tzdata"
-                       "nss-certs")))
+  (let ((input-names (append
+                      '("python-pip"
+                        "python-pre-commit"
+                        "tzdata"
+                        "nss-certs")
+                      (map (cut string-append "python-" <>)
+                           pypi-ignored-inputs))))
     (map (lambda (input)
            (make-warning
             package
diff --git a/tests/import/pypi.scm b/tests/import/pypi.scm
index 59d0bfc210..8da15edcd9 100644
--- a/tests/import/pypi.scm
+++ b/tests/import/pypi.scm
@@ -97,6 +97,7 @@ bar != 2
 
 [test]
 pytest (>=2.5.0)
+pytest-cov  # read but ignored
 ")
 
 ;; Beaker contains only optional dependencies.
@@ -258,7 +259,7 @@ files specified by SPECS.  Return its file name."
   (map specification->requirement-name test-specifications))
 
 (test-equal "parse-requires.txt"
-  (list '("foo" "bar") '("pytest"))
+  (list '("foo" "bar") '("pytest" "pytest-cov"))
   (mock ((ice-9 ports) call-with-input-file
          call-with-input-string)
         (parse-requires.txt test-requires.txt)))

Reply via email to