about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--README.org2
-rw-r--r--gn/packages/python.scm273
2 files changed, 233 insertions, 42 deletions
diff --git a/README.org b/README.org
index d11f3c6..5f49a2d 100644
--- a/README.org
+++ b/README.org
@@ -9,6 +9,8 @@ interest can be found at
 2. https://github.com/UMCUGenetics/guix-additions
 3. https://github.com/ekg/guix-genomics
 
+Also see [[http://git.genenetwork.org/pjotrp/guix-notes/src/branch/master/CHANNELS.org][Guix notes]] for a list of channels.
+
 To easily use the packages from this repo, simply add it to your
 `channels` list in ~/.config/guix/channels.scm as described
 [[https://guix.gnu.org/manual/en/html_node/Channels.html][here]]:
diff --git a/gn/packages/python.scm b/gn/packages/python.scm
index 4bfe648..7ea0211 100644
--- a/gn/packages/python.scm
+++ b/gn/packages/python.scm
@@ -1185,40 +1185,105 @@ generation, and transformation to RDF.  Salad provides a bridge between document
 and record oriented data modeling and the Semantic Web.")
     (license license:asl2.0)))
 
+(define-public python-cfgraph
+  (package
+    (name "python-cfgraph")
+    (version "0.2.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "CFGraph" version))
+        (sha256
+         (base32
+          "0x7yz0lvqb6mkhl5fbml27sppmscgpf8v2ism9jzzf0h982ffzxm"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-rdflib" ,python-rdflib)))
+    (home-page "https://github.com/hsolbrig/CFGraph")
+    (synopsis "Rdflib collections flattening graph")
+    (description
+     "Rdflib collections flattening graph.")
+    (license license:asl2.0)))
+
+(define-public python-pyshex
+  (package
+    (name "python-pyshex")
+    (version "0.7.14")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "PyShEx" version))
+        (sha256
+         (base32
+          "1fy664bh6hpmr4cf49fwwxng36kv7s6b2986hbv0cqcypc4ri2cs"))))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* "requirements.txt"
+               ((">=.*") "\n"))
+             #t))
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (if tests?
+               (begin
+                 (delete-file "tests/test_cli/test_evaluate.py")
+                 (delete-file "tests/test_cli/test_sparql_options.py")
+                 (delete-file "tests/test_issues/test_fhir.py")
+                 (delete-file "tests/test_issues/test_issue_30.py")
+                 (delete-file "tests/test_pyshex_utils/test_schema_loader.py")
+                 (delete-file "tests/test_shex_manifest/test_basics.py")
+                 (delete-file "tests/test_shextest_validation/test_manifest_shex_json.py")
+                 (delete-file "tests/test_shextest_validation/test_manifest_shex_shexc.py")
+                 (delete-file "tests/test_support_libraries/test_prefixlib.py")
+                 (delete-file "tests/test_utils/test_manifest.py")
+                 (delete-file "tests/test_utils/test_sparql_query.py")
+                 (delete-file "tests/test_utils/test_n3_mapper.py")
+                 (invoke "python" "-m" "unittest"))
+               #t))))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-cfgraph" ,python-cfgraph)
+       ("python-pyshexc" ,python-pyshexc)
+       ("python-rdflib" ,python-rdflib)
+       ("python-pbr" ,python-pbr)
+       ("python-rdflib-jsonld" ,python-rdflib-jsonld)
+       ("python-requests" ,python-requests)
+       ("python-shexjsg" ,python-shexjsg)
+       ("python-sparql-slurper" ,python-sparql-slurper)
+       ("python-sparqlwrapper" ,python-sparqlwrapper)
+       ("python-urllib3" ,python-urllib3)))
+    (home-page "https://github.com/hsolbrig/PyShEx")
+    (synopsis "Python ShEx Implementation")
+    (description "This package provides a python ShEx Implementation.")
+    (license license:asl2.0)))
+
 (define-public python-pyshexc
   (package
     (name "python-pyshexc")
-    (version "0.3.4")
+    (version "0.5.4")
     (source
       (origin
-        ;; Release doesn't include the test suite.
-        (method git-fetch)
-        (uri (git-reference
-               (url "https://github.com/shexSpec/grammar")
-               ;; Releases aren't tagged.
-               (commit "033f1a60954d39c88ac516179dbaa780d6db585d")))
-        (file-name (git-file-name name version))
+        (method url-fetch)
+        (uri (pypi-uri "PyShExC" version))
         (sha256
          (base32
-          "07zjizq5lcgx581cznl9mzfmbyxr9h93r9sy23f1xifsafr3s2xh"))))
+          "0hyhmc971gh25ja34j9hbkr7dg9n3jfin8668cqzjmcpjvb1jnil"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f  ; Test suite isn't well supported :/
+     '(#:tests? #f  ; Tests aren't included in release tarball.
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-source
-           (lambda* (#:key inputs #:allow-other-keys)
-             (chdir "parsers/python")
-             (substitute* "tests/test_basic_parser.py"
-               (("BasicParserTestCase.repo_url.*")
-                (string-append "BasicParserTestCase.repo_url = \""
-                               (assoc-ref inputs "test-suite")
-                               "/shemas\"\n")))
-             #t))
          (replace 'check
            (lambda* (#:key inputs outputs tests? #:allow-other-keys)
              (if tests?
                (begin (add-installed-pythonpath inputs outputs)
+                      (substitute* "tests/test_basic_parser.py"
+                        (("BasicParserTestCase.repo_url.*")
+                         (string-append "BasicParserTestCase.repo_url = \""
+                                        (assoc-ref inputs "test-suite")
+                                        "/schemas\"\n")))
                       (with-directory-excursion "tests"
                         (invoke "python" "build_test_harness.py")
                         (invoke "python" "test_basic_parser.py")
@@ -1231,10 +1296,10 @@ and record oriented data modeling and the Semantic Web.")
        ("python-pyjsg" ,python-pyjsg)
        ("python-rdflib" ,python-rdflib)
        ("python-rdflib-jsonld" ,python-rdflib-jsonld)
-       ("python-requests" ,python-requests)
-       ("python-shexjsg" ,python-shexjsg)))
+       ("python-requests" ,python-requests)))
     (native-inputs
      `(("python-yadict-compare" ,python-yadict-compare)
+       ("python-shexjsg" ,python-shexjsg-min)
        ("test-suite"
         ,(origin
            (method git-fetch)
@@ -1254,14 +1319,14 @@ and record oriented data modeling and the Semantic Web.")
 (define-public python-antlr4-python3-runtime
   (package
     (name "python-antlr4-python3-runtime")
-    (version "4.8")
+    (version "4.7.1")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "antlr4-python3-runtime" version))
         (sha256
          (base32
-          "0cyv8l216i921gxhbc96f797vkijmmc40a6jwys758qj0mfkyy8m"))))
+          "1lrzmagawmavyw1n1z0qarvs2jmbnbv0p89dah8g7klj8hnbf9hv"))))
     (build-system python-build-system)
     (home-page "https://www.antlr.org/")
     (synopsis "ANTLR runtime for Python")
@@ -1281,7 +1346,8 @@ and record oriented data modeling and the Semantic Web.")
           "1yj8y3k3fb7lk043f1zhmhb2lzjlfpnxajb92rpxmjzja93yxx0y"))))
     (build-system python-build-system)
     (arguments
-     '(#:phases
+     '(#:tests? #f   ; Tests not included in release tarball.
+       #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
            (lambda _
@@ -1300,18 +1366,17 @@ treats name/value pairs as first class attributes whenever possible.")
 (define-public python-shexjsg
   (package
     (name "python-shexjsg")
-    (version "0.6.3")
+    (version "0.6.5")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "ShExJSG" version))
         (sha256
          (base32
-          "04pb32g1y024rdyp5h7kq3pkgyp7jadwa737y6zfpdvqf25d3jvi"))))
+          "1nn69sl5j949qy21nl5gr56cxfhmml1vng08hayxqfj6vn3ay3gg"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f  ; Skip tests, they fail due to pyshexc missing.
-       #:phases
+     '(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
            (lambda _
@@ -1319,31 +1384,66 @@ treats name/value pairs as first class attributes whenever possible.")
                             "requirements-dev.txt")
               (("pyshexc.*") "") ; no loops
                (("==.*") "\n"))
-             #t)))))
+             #t))
+         (replace 'check
+           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+             (if tests?
+               (begin (add-installed-pythonpath inputs outputs)
+                      (substitute* '("tests/test_shexc.py"
+                                     "tests/test_shexj.py")
+                        (("shexTestRepository =.*")
+                         (string-append "shexTestRepository = \""
+                                        (assoc-ref inputs "test-suite")
+                                        "/schemas\"\n")))
+                      (invoke "python" "-m" "unittest"))
+               #t))))))
     (propagated-inputs
      `(("python-antlr4-python3-runtime" ,python-antlr4-python3-runtime)
        ("python-certifi" ,python-certifi)
        ("python-chardet" ,python-chardet)
        ("python-idna" ,python-idna)
        ("python-isodate" ,python-isodate)
+       ("python-pyjsg" ,python-pyjsg)
        ("python-requests" ,python-requests)
        ("python-urllib3" ,python-urllib3)))
     (native-inputs
      `(("python-jsonasobj" ,python-jsonasobj)
        ("python-pbr" ,python-pbr)
-       ("python-pyjsg" ,python-pyjsg)
        ("python-pyparsing" ,python-pyparsing)
-       ;("python-pyshexc" ,python-pyshexc) ; yay loops!
+       ("python-pyshexc" ,python-pyshexc)
        ("python-rdflib" ,python-rdflib)
        ("python-rdflib-jsonld" ,python-rdflib-jsonld)
        ("python-six" ,python-six)
-       ("python-yadict-compare" ,python-yadict-compare)))
+       ("python-yadict-compare" ,python-yadict-compare)
+       ("test-suite"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                  (url "https://github.com/shexSpec/shexTest")
+                  (commit "v2.0.2")))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32
+             "1x788nyrwycfr55wbg0ay6mc8mi6wwsg81h614rx9pw6rvrsppps"))))))
     (home-page "https://github.com/hsolbrig/ShExJSG")
     (synopsis "Astract Syntax Tree for the ShEx 2.0 language")
     (description "This package provides an astract syntax tree for the
 ShEx 2.0 language.")
     (license license:cc0)))
 
+;; Lets use this one for tests.
+(define python-shexjsg-min
+  (package
+    (inherit python-shexjsg)
+    (name "python-shexjsg")
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-shexjsg)
+       ((#:tests? _ #t) #f)))
+    (native-inputs
+     `(,@(alist-delete "python-pyshexc"
+                       (package-native-inputs python-shexjsg))))
+    (properties `((hidden? . #t)))))
+
 (define-public python-yadict-compare
   (package
     (name "python-yadict-compare")
@@ -1356,7 +1456,15 @@ ShEx 2.0 language.")
          (base32
           "1kkcw82cp6mf3jailckd9gya4r7wjyz4gc5azsj2njj4wqn081rw"))))
     (build-system python-build-system)
-    (arguments '(#:tests? #f))
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "test"
+               (invoke "python" "-m" "unittest" "discover" "-s" "test")))))))
+    (native-inputs
+     `(("python-unittest2" ,python-unittest2)))
     (home-page "https://github.com/hsolbrig/dict_compare")
     (synopsis "Dictionary comparison tool with filtering and reporting")
     (description
@@ -1367,19 +1475,31 @@ handles recursion and lists.")
 (define-public python-pyjsg
   (package
     (name "python-pyjsg")
-    (version "0.9.0")
+    (version "0.9.2")
     (source
       (origin
-        (method url-fetch)
-        (uri (pypi-uri "PyJSG" version))
+        (method git-fetch)
+        (uri (git-reference
+               ;; Releases aren't tagged in the repository.
+               (url "https://github.com/hsolbrig/pyjsg")
+               (commit "9b2b8fa8e3b8448abe70b09f804a79f0f31b32b7")))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "1zpd34svis4pc2hdry02mavz699i2dmaxir9q59ldxdy40jfrhq0"))))
+          "0fhpvb6i6xhyd6hnwknw0y2k33cb7iwj07g009lw96r580vprxs4"))))
     (build-system python-build-system)
     (arguments
-     '(#:tests? #f      ; tests not included
-       #:phases
+     '(#:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda* (#:key inputs #:allow-other-keys)
+             (for-each (lambda (file)
+                         (make-file-writable file))
+                       (find-files "." "."))
+             (substitute* "tests_standalone_2/test_xsfacet.py"
+               (("\\.\\.', '\\.\\.', '\\.\\.', 'shexSpec', 'shexTest")
+                (assoc-ref inputs "test-suite")))
+             #t))
          ;; From tox.ini
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
@@ -1401,10 +1521,79 @@ handles recursion and lists.")
        ("python-requests" ,python-requests)))
     (native-inputs
      `(("python-unittest2" ,python-unittest2)
-       ("python-yadict-compare" ,python-yadict-compare)))
+       ("python-yadict-compare" ,python-yadict-compare)
+       ("test-suite"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                  (url "https://github.com/shexSpec/shexTest")
+                  (commit "v2.0.2")))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32
+             "1x788nyrwycfr55wbg0ay6mc8mi6wwsg81h614rx9pw6rvrsppps"))))))
     (home-page "https://github.com/hsolbrig/pyjsg")
-    (synopsis
-     "Python JSON Schema Grammar bindings")
+    (synopsis "Python JSON Schema Grammar bindings")
     (description
      "A tool to create Python classes that represent JSON objects defined in JSG.")
     (license license:asl2.0)))
+
+(define-public python-sparqlwrapper
+  (package
+    (name "python-sparqlwrapper")
+    (version "1.8.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "SPARQLWrapper" version))
+        (sha256
+         (base32
+          "0g7va1l37iq96abqqn6b4a6sjxxh5m3h1svsw1h1c56siidnp9nn"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f  ; 2to3 doesn't quite do it for the test suite.
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (if tests?
+               (begin ;; from run_tests_py3.sh
+                      (invoke "2to3" "-wn" "--no-diffs" "test")
+                      (substitute* "test/wrapper_test.py"
+                        (("urllib2._opener") "urllib.request._opener"))
+                      (setenv "PYTHONPATH"
+                              (string-append "SPARQLWrapper:"
+                                             (getenv "PYTHONPATH")))
+                      (invoke "nosetests"))
+               #t))))))
+    (propagated-inputs
+     `(("python-rdflib" ,python-rdflib)))
+    (native-inputs
+     `(("python-nose" ,python-nose)))
+    (home-page "https://rdflib.dev/sparqlwrapper/")
+    (synopsis "SPARQL Endpoint interface to Python")
+    (description
+     "THis package provides a SPARQL Endpoint interface to Python.")
+    (license license:w3c)))
+
+(define-public python-sparql-slurper
+  (package
+    (name "python-sparql-slurper")
+    (version "0.3.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "sparql_slurper" version))
+        (sha256
+         (base32
+          "1m9jlck7ny5dyr762l4xrsn7ll4v48fccjkm062ihhvhbsjf0iil"))))
+    (build-system python-build-system)
+    (arguments '(#:tests? #f))  ; Tests require network access.
+    (propagated-inputs
+     `(("python-pbr" ,python-pbr)
+       ("python-rdflib" ,python-rdflib)
+       ("python-sparqlwrapper" ,python-sparqlwrapper)))
+    (home-page "https://github.com/hsolbrig/sparql_slurper")
+    (synopsis "SPARQL Slurper for rdflib")
+    (description "This package provides a SPARQL Slurper for rdflib.")
+    (license license:asl2.0)))