diff options
Diffstat (limited to 'gnu/packages/orange.scm')
-rw-r--r-- | gnu/packages/orange.scm | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/gnu/packages/orange.scm b/gnu/packages/orange.scm new file mode 100644 index 0000000000..942e194739 --- /dev/null +++ b/gnu/packages/orange.scm @@ -0,0 +1,209 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages orange) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system python) + #:use-module (gnu packages) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages graph) + #:use-module (gnu packages machine-learning) + #:use-module (gnu packages python-crypto) + #:use-module (gnu packages python-science) + #:use-module (gnu packages python-web) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages qt)) + +(define-public python-orange-canvas-core + (package + (name "python-orange-canvas-core") + (version "0.1.19") + (source + (origin + (method url-fetch) + (uri (pypi-uri "orange-canvas-core" version)) + (sha256 + (base32 "03wav2msfm32y8zwq69v1v6qyh1ld76xla2z60avf49yhbwjgwal")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'check-setup + (lambda _ + ;; This test fails with: RuntimeError: Event loop is closed. + (substitute* "orangecanvas/application/tests/test_mainwindow.py" + (("test_help_requests") "_test_help_requests")) + (setenv "HOME" "/tmp") + (setenv "QT_QPA_PLATFORM" "offscreen") + #t))))) + (propagated-inputs + `(("python-anyqt" ,python-anyqt) + ("python-cachecontrol" ,python-cachecontrol) + ("python-commonmark" ,python-commonmark) + ("python-dictdiffer" ,python-dictdiffer) + ("python-docutils" ,python-docutils) + ("python-pyqt" ,python-pyqt) + ("python-qasync" ,python-qasync) + ("python-requests" ,python-requests))) + (home-page "https://github.com/biolab/orange-canvas-core") + (synopsis "Core component of Orange Canvas") + (description + "Orange Canvas Core is a framework for building graphical user interfaces +for editing workflows. It is a component used to build the Orange Canvas +data-mining application.") + (license license:gpl3))) + +(define-public python-orange-widget-base + (package + (name "python-orange-widget-base") + (version "4.12.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "orange-widget-base" version)) + (sha256 + (base32 "13sy3s8rdqs3i3ghixljpqvnfz81qmbb0kqlasw39zvf39qc22kz")))) + (build-system python-build-system) + (arguments + `(;; unittest fails to load one test, all other tests are passing: + ;; AttributeError: module 'orangewidget' has no attribute 'version'. + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'check 'check-setup + (lambda _ + (setenv "HOME" "/tmp") + (setenv "QT_QPA_PLATFORM" "offscreen") + #t))))) + (propagated-inputs + `(("python-anyqt" ,python-anyqt) + ("python-matplotlib" ,python-matplotlib) + ("python-orange-canvas-core" + ,python-orange-canvas-core) + ("python-pyqtgraph" ,python-pyqtgraph))) + (home-page "https://github.com/biolab/orange-widget-base") + (synopsis "Base Widget for Orange Canvas") + (description + "Orange Widget Base provides a base widget component for a interactive +GUI based workflow. It is primarily used in the Orange framework.") + (license license:gpl3+))) + +(define-public orange + (package + (name "orange") + (version "3.28.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "Orange3" version)) + (sha256 + (base32 "1ac4xjjkx06z10hl7k0zh1z3qhkl5vng15l9jkpkmck9spinbzil")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'preparations + (lambda _ + ;; Delete test that opens an outgoing connection. + (delete-file "Orange/tests/test_url_reader.py") + ;; This is a binary data file and it breaks runpath validation. + (delete-file "Orange/tests/datasets/binary-blob.tab") + ;; Skip the test which uses that binary file. + (substitute* "Orange/tests/test_txt_reader.py" + (("test_read_nonutf8_encoding") "_test_read_nonutf8_encoding")) + ;; We use a correct version of PyQtWebEngine, but the build scripts + ;; consider it incorrect anyways. Remove the constraint entirely to + ;; work around this bug. + (substitute* "requirements-gui.txt" (("PyQtWebEngine>=5.12") "")) + #t)) + (add-before 'check 'set-HOME + ;; Tests need a writable home. + (lambda _ (setenv "HOME" "/tmp") #t)) + (add-after 'install 'wrap-executable + ;; Ensure that icons are found at runtime. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/orange-canvas") + `("QT_PLUGIN_PATH" prefix + ,(list (string-append (assoc-ref inputs "qtsvg") + "/lib/qt5/plugins/"))))) + #t))))) + (native-inputs + `(("python-cython" ,python-cython))) + (inputs + `(("python-anyqt" ,python-anyqt) + ("python-baycomp" ,python-baycomp) + ("python-bottleneck" ,python-bottleneck) + ("python-chardet" ,python-chardet) + ("python-httpx" ,python-httpx) + ("python-joblib" ,python-joblib) + ("python-keyring" ,python-keyring) + ("python-keyrings.alt" ,python-keyrings.alt) + ("python-louvain" ,python-louvain) + ("python-matplotlib" ,python-matplotlib) + ("python-networkx" ,python-networkx) + ("python-numpy" ,python-numpy) + ("python-openpyxl" ,python-openpyxl) + ("python-opentsne" ,python-opentsne) + ("python-orange-canvas-core" + ,python-orange-canvas-core) + ("python-orange-widget-base" + ,python-orange-widget-base) + ("python-pandas" ,python-pandas) + ("python-pyqt" ,python-pyqt) + ("python-pyqtgraph" ,python-pyqtgraph) + ("python-pyqtwebengine" ,python-pyqtwebengine) + ("python-pyyaml" ,python-pyyaml) + ("python-requests" ,python-requests) + ("python-scikit-learn" ,python-scikit-learn) + ("python-scipy" ,python-scipy) + ("python-serverfiles" ,python-serverfiles) + ("python-xlrd" ,python-xlrd) + ("python-xlsxwriter" ,python-xlsxwriter) + ("qtbase" ,qtbase) + ("qtsvg" ,qtsvg) + ("xdg-utils" ,xdg-utils))) + (home-page "https://orangedatamining.com/") + (synopsis "Component-based data mining framework") + (description + "Orange is a component-based, graphical framework for machine learning, +data analysis, data mining and data visualization.") + (license license:gpl3+))) + +(define-public python-serverfiles + (package + (name "python-serverfiles") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "serverfiles" version)) + (sha256 + (base32 "1qgbzgnaxj4wsp2rdas53qxsh0j7xpibq25w6lviwyaqwwrgq42y")))) + (build-system python-build-system) + (propagated-inputs + `(("python-requests" ,python-requests))) + (home-page "https://github.com/biolab/serverfiles") + (synopsis "Utility to access files on a HTTP server and store them locally") + (description + "This package provides an utility that accesses files on a HTTP server +and stores them locally for reuse. It is primarily used by the Orange +framework.") + (license license:gpl3+))) |