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