guix_mirror_bot pushed a commit to branch astro-updates
in repository guix.

commit ccb7b148d1c3c8f6286b5dd586b2a9a0c0109950
Author: Sharlatan Hellseher <[email protected]>
AuthorDate: Wed Nov 19 22:13:25 2025 +0000

    gnu: Add python-pypeit.
    
    * gnu/packages/astronomy.scm (python-pypeit, python-pypeit-minimal): New
    variables.
    
    Change-Id: I735665845a9a6497661e89b1337923c8f425e1c2
---
 gnu/packages/astronomy.scm | 116 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 116 insertions(+)

diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index b9be8fd866..75bad765c1 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -6975,6 +6975,122 @@ N-Chilada and RAMSES AMR outputs.")
        (sha256
         (base32 "0rl9ais4yc6kdijq1il4vi3mplp7z6bcih4x55axhan5n3n7riwi"))))))
 
+(define-public python-pypeit
+  (package
+    (name "python-pypeit")
+    (version "1.17.4") ;XXX: Newer versions need to be built with NumPy 2+
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+              (url "https://github.com/pypeit/PypeIt";)
+              (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16y4vkjmd29zrjhhv2fyv9rksjblri3zf6m81mhmhys5sy09xmfz"))))
+    (build-system pyproject-build-system)
+    (arguments
+     (list
+      ;; tests: 242 passed, 10 skipped, 5 deselected, 120 warnings
+      #:test-flags
+      ;; Tests still try to download test data even it's available in
+      ;; "pypeit/data".
+      #~(list "--deselect=pypeit/tests/test_install.py::test_install_telluric"
+              #$@(map (lambda (test) (string-append "--deselect=pypeit/"
+                                                    "tests/test_pkgdata.py::"
+                                                    test))
+                      (list "test_cloud_url"
+                            "test_fetch_github_files"
+                            "test_github_contents"
+                            "test_cache_to_pkg")))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; XXX: See: <https://github.com/pypeit/PypeIt/issues/1786>.
+          (add-after 'unpack 'remove-missing-scripts-entry-points
+            (lambda _
+              (substitute* "setup.cfg"
+                ((".*pypeit_install_ql_calibs.*") "")
+                ((".*pypeit_ql_multislit.*") ""))))
+          (add-after 'unpack 'set-version
+            (lambda _
+              (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))
+          (add-after 'install 'include-package-data
+            ;; XXX: PyPI archive provides pypeit/data but during build from
+            ;; Git it's ignored for some reason, add it manually.
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (copy-recursively "pypeit/data"
+                                (string-append (site-packages inputs outputs)
+                                               "/pypeit/data"))))
+          (add-before 'check 'pre-check
+            (lambda _
+              (system "Xvfb &")
+              (setenv "DISPLAY" ":0")
+              (setenv "HOME" "/tmp")
+              (setenv "MPLBACKEND" "agg")))
+          (add-before 'check 'post-check
+            (lambda _
+              (for-each delete-file-recursively
+                        (find-files #$output "__pycache__" #:directories? 
#t)))))))
+    (native-inputs
+     (list nss-certs-for-test
+           python-cython
+           python-pygit2
+           python-pytest
+           python-scikit-image
+           python-setuptools
+           python-setuptools-scm
+           python-shapely
+           python-specutils
+           xorg-server-for-tests))
+    (propagated-inputs
+     (list python-astropy-6
+           python-bottleneck
+           python-configobj
+           python-extension-helpers
+           python-fast-histogram
+           python-ginga
+           python-ipython
+           python-linetools
+           python-matplotlib
+           python-numpy
+           python-packaging
+           python-pyerfa
+           python-pygithub
+           python-pyqt-6
+           python-pyyaml
+           python-qtpy
+           python-scikit-learn
+           python-scipy))
+    (home-page "https://github.com/pypeit/PypeIt";)
+    (synopsis "Spectroscopic Data Reduction Pipeline")
+    (description
+     "PypeIt is a Python package for semi-automated reduction of astronomical
+spectroscopic data.  Its algorithms build on decades-long development of
+previous data reduction pipelines by the developers.
+
+It is designed to be used by both advanced spectroscopists with prior data
+reduction expertise and astronomers with no prior experience of data
+reduction.  It is highly configurable and designed to be applied to any
+standard slit-imaging spectrograph, including long-slit, multi-slit, as well
+as cross-dispersed echelle spectra.")
+    (license license:bsd-3)))
+
+;; A bare minimal package, mainly to use in tests and reduce closure
+;; size. Tests are left out in the main package to slim down native-inputs.
+(define-public python-pypeit-minimal
+  (package/inherit python-pypeit
+    (name "python-pypeit-minimal")
+    (arguments
+     (substitute-keyword-arguments
+         (package-arguments python-pypeit)
+       ((#:tests? _ #t) #f)
+       ((#:phases phases '%standard-phases)
+        #~(modify-phases #$phases
+            (delete 'pre-check)))))
+    (native-inputs
+     (list python-setuptools
+           python-setuptools-scm))))
+
 (define-public python-pyregion
   (package
     (name "python-pyregion")

Reply via email to