Round 359: Poetry ext, UV ext, Rye ext, PDM ext, Hatch ext (20 commands)

ober

df65b85db75a6e2d62ba232b1e41eeb03aae5de3

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index af72f11..b281656 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 359 — Poetry ext, UV ext, Rye ext, PDM ext, Hatch ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| poetry-install | :orange_circle: | Poetry: install dependencies |
+| poetry-add | :orange_circle: | Poetry: add package |
+| poetry-lock | :orange_circle: | Poetry: update lock file |
+| poetry-show | :orange_circle: | Poetry: show packages |
+| uv-pip-install | :orange_circle: | UV: pip install |
+| uv-pip-compile | :orange_circle: | UV: compile requirements |
+| uv-venv | :orange_circle: | UV: create virtual env |
+| uv-run | :orange_circle: | UV: run command |
+| rye-sync | :orange_circle: | Rye: sync dependencies |
+| rye-add | :orange_circle: | Rye: add package |
+| rye-pin | :orange_circle: | Rye: pin Python version |
+| rye-show | :orange_circle: | Rye: show project info |
+| pdm-install | :orange_circle: | PDM: install dependencies |
+| pdm-add | :orange_circle: | PDM: add package |
+| pdm-lock | :orange_circle: | PDM: update lock file |
+| pdm-run | :orange_circle: | PDM: run command |
+| hatch-build | :orange_circle: | Hatch: build project |
+| hatch-test | :orange_circle: | Hatch: run tests |
+| hatch-version | :orange_circle: | Hatch: show version |
+| hatch-env | :orange_circle: | Hatch: manage environments |
+
 ### Round 358 — Conan ext, Vcpkg ext, Cargo ext, GoMod ext, Pip ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index dd6839a..a9348ce 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -25947,3 +25947,51 @@
 (def (cmd-pip-check app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Pip: checking dependency consistency")))
+
+;;; Round 359 — Rye ext, PDM ext, Hatch ext (batch 2)
+
+(def (cmd-rye-pin app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Rye pin Python version: "
+      (lambda (ver)
+        (echo-message! echo (str "Rye: pinning Python " ver))))))
+
+(def (cmd-rye-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Rye: showing project info")))
+
+(def (cmd-pdm-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PDM: installing dependencies")))
+
+(def (cmd-pdm-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PDM add package: "
+      (lambda (pkg)
+        (echo-message! echo (str "PDM: adding " pkg))))))
+
+(def (cmd-pdm-lock app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PDM: updating lock file")))
+
+(def (cmd-pdm-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PDM run command: "
+      (lambda (cmd)
+        (echo-message! echo (str "PDM: running " cmd))))))
+
+(def (cmd-hatch-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hatch: building project")))
+
+(def (cmd-hatch-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hatch: running tests")))
+
+(def (cmd-hatch-version app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hatch: showing version")))
+
+(def (cmd-hatch-env app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hatch: managing environments")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index e2ba156..71a719a 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -26698,3 +26698,53 @@
 (def (cmd-cargo-clippy app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Cargo: running clippy lints")))
+
+;;; Round 359 — Poetry ext, UV ext, Rye ext, PDM ext, Hatch ext (batch 1)
+
+(def (cmd-poetry-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Poetry: installing dependencies")))
+
+(def (cmd-poetry-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Poetry add package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Poetry: adding " pkg))))))
+
+(def (cmd-poetry-lock app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Poetry: updating lock file")))
+
+(def (cmd-poetry-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Poetry: showing installed packages")))
+
+(def (cmd-uv-pip-install app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "UV pip install: "
+      (lambda (pkg)
+        (echo-message! echo (str "UV: installing " pkg))))))
+
+(def (cmd-uv-pip-compile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "UV: compiling requirements")))
+
+(def (cmd-uv-venv app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "UV: creating virtual environment")))
+
+(def (cmd-uv-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "UV run command: "
+      (lambda (cmd)
+        (echo-message! echo (str "UV: running " cmd))))))
+
+(def (cmd-rye-sync app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Rye: syncing dependencies")))
+
+(def (cmd-rye-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Rye add package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Rye: adding " pkg))))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index bf66f19..bc0fbf4 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8980,4 +8980,26 @@
   (register-command! 'pip-freeze cmd-pip-freeze)
   (register-command! 'pip-search cmd-pip-search)
   (register-command! 'pip-check cmd-pip-check)
+
+  ;; Round 359 — Poetry ext, UV ext, Rye ext, PDM ext, Hatch ext
+  (register-command! 'poetry-install cmd-poetry-install)
+  (register-command! 'poetry-add cmd-poetry-add)
+  (register-command! 'poetry-lock cmd-poetry-lock)
+  (register-command! 'poetry-show cmd-poetry-show)
+  (register-command! 'uv-pip-install cmd-uv-pip-install)
+  (register-command! 'uv-pip-compile cmd-uv-pip-compile)
+  (register-command! 'uv-venv cmd-uv-venv)
+  (register-command! 'uv-run cmd-uv-run)
+  (register-command! 'rye-sync cmd-rye-sync)
+  (register-command! 'rye-add cmd-rye-add)
+  (register-command! 'rye-pin cmd-rye-pin)
+  (register-command! 'rye-show cmd-rye-show)
+  (register-command! 'pdm-install cmd-pdm-install)
+  (register-command! 'pdm-add cmd-pdm-add)
+  (register-command! 'pdm-lock cmd-pdm-lock)
+  (register-command! 'pdm-run cmd-pdm-run)
+  (register-command! 'hatch-build cmd-hatch-build)
+  (register-command! 'hatch-test cmd-hatch-test)
+  (register-command! 'hatch-version cmd-hatch-version)
+  (register-command! 'hatch-env cmd-hatch-env)
 )