;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 Vinicius Monego ;;; ;;; 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 . (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+)))