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