1{ lib
2, buildPythonPackage
3, fetchPypi
4, pythonOlder
5, atomicwrites
6, chardet
7, cloudpickle
8, cookiecutter
9, diff-match-patch
10, flake8
11, intervaltree
12, jedi
13, jellyfish
14, keyring
15, matplotlib
16, mccabe
17, nbconvert
18, numpy
19, numpydoc
20, psutil
21, pygments
22, pylint
23, pylint-venv
24, pyls-spyder
25, pyopengl
26, pyqtwebengine
27, python-lsp-black
28, python-lsp-server
29, pyxdg
30, pyzmq
31, pycodestyle
32, qdarkstyle
33, qstylizer
34, qtawesome
35, qtconsole
36, qtpy
37, rope
38, rtree
39, scipy
40, spyder-kernels
41, textdistance
42, three-merge
43, watchdog
44}:
45
46buildPythonPackage rec {
47 pname = "spyder";
48 version = "5.4.2";
49 format = "setuptools";
50
51 disabled = pythonOlder "3.7";
52
53 src = fetchPypi {
54 inherit pname version;
55 hash = "sha256-L8zgT7M7N+P5/9FQgf6ab7afUQXC1afzwUjAp6yKxC8=";
56 };
57
58 patches = [
59 ./dont-clear-pythonpath.patch
60 ];
61
62 nativeBuildInputs = [
63 pyqtwebengine.wrapQtAppsHook
64 ];
65
66 propagatedBuildInputs = [
67 atomicwrites
68 chardet
69 cloudpickle
70 cookiecutter
71 diff-match-patch
72 intervaltree
73 jedi
74 jellyfish
75 keyring
76 matplotlib
77 nbconvert
78 numpy
79 numpydoc
80 psutil
81 pygments
82 pylint-venv
83 pyls-spyder
84 pyopengl
85 pyqtwebengine
86 python-lsp-black
87 python-lsp-server
88 pyxdg
89 pyzmq
90 qdarkstyle
91 qstylizer
92 qtawesome
93 qtconsole
94 qtpy
95 rope
96 rtree
97 scipy
98 spyder-kernels
99 textdistance
100 three-merge
101 watchdog
102 ] ++ python-lsp-server.optional-dependencies.all;
103
104 # There is no test for spyder
105 doCheck = false;
106
107 postPatch = ''
108 # Remove dependency on pyqtwebengine
109 # This is still part of the pyqt 5.11 version we have in nixpkgs
110 sed -i /pyqtwebengine/d setup.py
111 substituteInPlace setup.py \
112 --replace "qdarkstyle>=3.0.2,<3.1.0" "qdarkstyle" \
113 --replace "ipython>=7.31.1,<8.0.0" "ipython"
114 '';
115
116 postInstall = ''
117 # Add Python libs to env so Spyder subprocesses
118 # created to run compute kernels don't fail with ImportErrors
119 wrapProgram $out/bin/spyder --prefix PYTHONPATH : "$PYTHONPATH"
120 '';
121
122 dontWrapQtApps = true;
123
124 preFixup = ''
125 makeWrapperArgs+=("''${qtWrapperArgs[@]}")
126 '';
127
128 meta = with lib; {
129 description = "Scientific python development environment";
130 longDescription = ''
131 Spyder (previously known as Pydee) is a powerful interactive development
132 environment for the Python language with advanced editing, interactive
133 testing, debugging and introspection features.
134 '';
135 homepage = "https://www.spyder-ide.org/";
136 downloadPage = "https://github.com/spyder-ide/spyder/releases";
137 changelog = "https://github.com/spyder-ide/spyder/blob/master/CHANGELOG.md";
138 license = licenses.mit;
139 maintainers = with maintainers; [ gebner ];
140 platforms = platforms.linux;
141 };
142}