Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib 2, baycomp 3, bottleneck 4, buildPythonPackage 5, chardet 6, copyDesktopItems 7, cython 8, fetchFromGitHub 9, fetchurl 10, httpx 11, joblib 12, keyring 13, keyrings-alt 14, makeDesktopItem 15, matplotlib 16, nix-update-script 17, numpy 18, oldest-supported-numpy 19, openpyxl 20, opentsne 21, orange-canvas-core 22, orange-widget-base 23, pandas 24, pyqtgraph 25, pyqtwebengine 26, python 27, python-louvain 28, pythonOlder 29, pyyaml 30, qt5 31, qtconsole 32, recommonmark 33, requests 34, scikit-learn 35, scipy 36, serverfiles 37, setuptools 38, sphinx 39, wheel 40, xlrd 41, xlsxwriter 42}: 43 44let 45 self = buildPythonPackage rec { 46 pname = "orange3"; 47 version = "3.35.0"; 48 format = "pyproject"; 49 50 disabled = pythonOlder "3.7"; 51 52 src = fetchFromGitHub { 53 owner = "biolab"; 54 repo = "orange3"; 55 rev = "refs/tags/${version}"; 56 hash = "sha256-dj/Z4uOjA4nidd45dnHZDyHZP6Fy/MGC8asqOPV7U7A="; 57 }; 58 59 postPatch = '' 60 substituteInPlace pyproject.toml \ 61 --replace "setuptools>=41.0.0,<50.0" "setuptools" 62 sed -i 's;\(scikit-learn\)[^$]*;\1;g' requirements-core.txt 63 sed -i 's;pyqtgraph[^$]*;;g' requirements-gui.txt # TODO: remove after bump with a version greater than 0.13.1 64 ''; 65 66 nativeBuildInputs = [ 67 copyDesktopItems 68 cython 69 oldest-supported-numpy 70 qt5.wrapQtAppsHook 71 recommonmark 72 setuptools 73 sphinx 74 wheel 75 ]; 76 77 enableParallelBuilding = true; 78 79 propagatedBuildInputs = [ 80 numpy 81 scipy 82 chardet 83 openpyxl 84 opentsne 85 qtconsole 86 bottleneck 87 matplotlib 88 joblib 89 requests 90 keyring 91 scikit-learn 92 pandas 93 pyqtwebengine 94 serverfiles 95 orange-canvas-core 96 python-louvain 97 xlrd 98 xlsxwriter 99 httpx 100 pyqtgraph 101 orange-widget-base 102 keyrings-alt 103 pyyaml 104 baycomp 105 ]; 106 107 # FIXME: ImportError: cannot import name '_variable' from partially initialized module 'Orange.data' (most likely due to a circular import) (/build/source/Orange/data/__init__.py) 108 doCheck = false; 109 110 pythonImportsCheck = [ "Orange" "Orange.data._variable" ]; 111 112 desktopItems = [ 113 (makeDesktopItem { 114 name = "orange"; 115 exec = "orange-canvas"; 116 desktopName = "Orange Data Mining"; 117 genericName = "Data Mining Suite"; 118 comment = "Explore, analyze, and visualize your data"; 119 icon = "orange-canvas"; 120 mimeTypes = [ "application/x-extension-ows" ]; 121 categories = [ "Science" "Education" "ArtificialIntelligence" "DataVisualization" "NumericalAnalysis" "Qt" ]; 122 keywords = [ "Machine Learning" "Scientific Visualization" "Statistical Analysis" ]; 123 }) 124 ]; 125 126 postInstall = '' 127 wrapProgram $out/bin/orange-canvas \ 128 "${"$"}{qtWrapperArgs[@]}" 129 mkdir -p $out/share/icons/hicolor/{256x256,48x48}/apps 130 cp distribute/icon-256.png $out/share/icons/hicolor/256x256/apps/orange-canvas.png 131 cp distribute/icon-48.png $out/share/icons/hicolor/48x48/apps/orange-canvas.png 132 ''; 133 134 passthru = { 135 updateScript = nix-update-script { }; 136 tests.unittests = self.overridePythonAttrs (old: { 137 pname = "${old.pname}-tests"; 138 format = "other"; 139 140 preCheck = '' 141 export HOME=$(mktemp -d) 142 export QT_PLUGIN_PATH="${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}" 143 export QT_QPA_PLATFORM_PLUGIN_PATH="${qt5.qtbase.bin}/lib/qt-${qt5.qtbase.version}/plugins"; 144 export QT_QPA_PLATFORM=offscreen 145 146 rm Orange -rf 147 cp -r ${self}/${python.sitePackages}/Orange . 148 chmod +w -R . 149 150 rm Orange/tests/test_url_reader.py # uses network 151 rm Orange/tests/test_ada_boost.py # broken: The 'base_estimator' parameter of AdaBoostRegressor must be an object implementing 'fit' and 'predict' or a str among {'deprecated'}. Got None instead. 152 ''; 153 154 checkPhase = '' 155 runHook preCheck 156 ${python.interpreter} -m unittest -b -v ./Orange/**/test*.py 157 runHook postCheck 158 ''; 159 160 postInstall = ""; 161 162 doBuild = false; 163 doInstall = false; 164 165 nativeBuildInputs = [ self ] ++ old.nativeBuildInputs; 166 }); 167 }; 168 169 meta = with lib; { 170 description = "Data mining and visualization toolbox for novice and expert alike"; 171 homepage = "https://orangedatamining.com/"; 172 changelog = "https://github.com/biolab/orange3/blob/${version}/CHANGELOG.md"; 173 license = with licenses; [ gpl3Plus ]; 174 maintainers = with maintainers; [ lucasew ]; 175 mainProgram = "orange-canvas"; 176 }; 177 }; 178in 179self