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