Subject: [PATCH 5/5] gnu: Add python-jupytext. X-Debbugs-Cc: [email-masked]

From: Mădălin Ionel Patrașcu<[email-masked]>
Date: Thu, 13 Oct 2022 13:40:06 +0200

* gnu/packages/python-xyz.scm (python-jupytext): New variable.
---
 gnu/packages/python-xyz.scm | 77 +++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 6c111bcb82..51753e279a 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -319,6 +319,83 @@ (define-public python-janus
 design}.")
     (license license:asl2.0)))
 
+(define-public python-jupytext
+  (package
+    (name "python-jupytext")
+    (version "1.14.1")
+    (source
+      (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mwouts/jupytext")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0gqpvphrp2ja9ggadx0rrk0sqbpz6kqqg62qqmw4k17469lphc8c"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-after 'unpack 'relax-requirements
+             (lambda _
+               (substitute* "tests/utils.py"
+                 ;; is required isort > 5.3.0 but the authors made a confusion
+                 ;; between string comparations and version parsing comparasion
+                 (("or isort_version\\(\\) <= \"5\\.3\\.0\"")
+                   "")
+                 (("\"python_kernel\"")
+                   "\"python3\""))))
+           (replace 'check
+             (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+               ;; some tests fails when HOME=/homeless-shelter.
+               (setenv "HOME" "/tmp")
+               ;; OSError: [Errno 18] Invalid cross-device link
+               (setenv "TMPDIR" "/tmp")
+               (add-installed-pythonpath inputs outputs)
+               (when tests?
+                 (let ((disabled-tests
+                         (list "test_create_header_with_set_formats"
+                               "test_pre_commit_hook"
+                               "test_sync_with_pre_commit_hook")))
+                      (invoke "pytest" "-vv" "-k"
+                              (string-append "not "
+                                             (string-join disabled-tests
+                                                " and not "))))))))))
+    (native-inputs
+      (list git
+            python-autopep8
+            python-black
+            python-flake8
+            python-gitpython
+            python-isort
+            python-ipython-genutils
+            python-jupyter-server
+            python-pre-commit
+            python-pytest
+            python-pyaml
+            python-sphinx-gallery-0.7.0))
+    (propagated-inputs
+      (list python-markdown-it-py
+            python-mdit-py-plugins
+            python-nbformat))
+    (home-page "https://github.com/mwouts/jupytext")
+    (synopsis
+     "Jupyter notebooks as Markdown documents, Julia, Python or R scripts")
+    (description
+     "@code{Jupytext} is a plugin for @code{Jupyter} that can save @code{Jupyter
+notebooks} as either @code{Markdown} files or scripts in many languages.  Common
+use cases for @code{Jupytext} are:
+@itemize
+@item
+version control on Jupyter Notebooks
+@item
+editing, merging or refactoring notebooks in your favorite text editor
+@item
+applying Q&A checks on notebooks.
+@end itemize")
+    (license license:expat)))
+
 (define-public python-logzero
   (package
     (name "python-logzero")
-- 
2.37.3