Subject: [PATCH] gnu: Add python-online-judge-tools
From: gemmaro <[email-masked]>
To: [email-masked]
Cc: gemmaro <[email-masked]>
Date: Fri, 30 Dec 2022 14:20:19 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

---
 gnu/packages/python-xyz.scm | 65 +++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 2b28e8bd53..43e98ed9dc 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -132,6 +132,7 @@
 ;;; Copyright © 2022 Garek Dyszel <[email-masked]>
 ;;; Copyright © 2022 Baptiste Strazzulla <[email-masked]>
 ;;; Copyright © 2022 Nicolas Graves <[email-masked]>
+;;; Copyright © 2022 gemmaro <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22662,6 +22663,70 @@ (define-public python-onetimepass
 time-based (TOTP) passwords.")
     (license license:expat)))
 
+(define-public python-online-judge-api-client
+  (package
+    (name "python-online-judge-api-client")
+    (version "10.10.1")
+    ;; NOTE: somehow it cannot be downloaded from PyPI
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/online-judge-tools/api-client")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0yjqhh44va5nawd9rpqcjyf0g7rjlkvn7s90fmwmwjyqvy6lhjiz"))))
+    (build-system python-build-system)
+    (arguments
+     ;; NOTE: a lot of tests needs networking
+     `(#:tests? #f))
+    (propagated-inputs (list python-appdirs
+                             python-beautifulsoup4
+                             python-colorlog
+                             python-lxml
+                             python-requests
+                             python-toml
+                             python-jsonschema))
+    (home-page "https://github.com/online-judge-tools/api-client")
+    (synopsis "API client for various online judges")
+    (description
+     "This is an API client for various online judges, used as the backend
+library of @code{oj} command.  You can use the Python
+library (@code{onlinejudge} module) and the command-line
+interface (@command{oj-api} command) which talks JSON compatible with
+jmerle/competitive-companion.")
+    (license license:expat)))
+
+(define-public python-online-judge-tools
+  (package
+    (name "python-online-judge-tools")
+    (version "11.5.1")
+    ;; NOTE: somehow it cannot be downloaded from PyPI
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/online-judge-tools/oj")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0zkzmmjgjb6lyrzq1ip54cpnp7al9a7mcyjyi5vx58bvnx3q0c6m"))))
+    (build-system python-build-system)
+    (arguments
+     ;; NOTE: a lot of tests needs networking
+     `(#:tests? #f))
+    (propagated-inputs (list python-online-judge-api-client python-colorama
+                             python-requests))
+    (home-page "https://github.com/online-judge-tools/oj")
+    (synopsis "Command to help solving problems on various online judges")
+    (description
+     "@command{oj} is a command line tool to help solving problems on
+various online judges.  This command automates downloading sample
+cases, generating additional test cases, testing for your code, and
+submitting it.")
+    (license license:expat)))
+
 (define-public python-parso
   (package
     (name "python-parso")

base-commit: a09f28758af24e947f9daaf549740e52af111941
-- 
2.38.1