1{
2 lib,
3 buildPythonPackage,
4 decorator,
5 fetchPypi,
6 hatchling,
7 importlib-metadata,
8 ipykernel,
9 ipython,
10 jupyter-client,
11 psutil,
12 python-dateutil,
13 pythonOlder,
14 pyzmq,
15 tornado,
16 tqdm,
17 traitlets,
18}:
19
20buildPythonPackage rec {
21 pname = "ipyparallel";
22 version = "9.0.1";
23 pyproject = true;
24
25 disabled = pythonOlder "3.8";
26
27 src = fetchPypi {
28 inherit pname version;
29 hash = "sha256-LlksrSIAxalPu/9jm/825uyRIvNLNrL8a01njZ6Y8pw=";
30 };
31
32 # We do not need the jupyterlab build dependency, because we do not need to
33 # build any JS components; these are present already in the PyPI artifact.
34 #
35 postPatch = ''
36 substituteInPlace pyproject.toml \
37 --replace '"jupyterlab==4.*",' ""
38 '';
39
40 build-system = [ hatchling ];
41
42 dependencies = [
43 decorator
44 ipykernel
45 ipython
46 jupyter-client
47 psutil
48 python-dateutil
49 pyzmq
50 tornado
51 tqdm
52 traitlets
53 ]
54 ++ lib.optional (pythonOlder "3.10") importlib-metadata;
55
56 # Requires access to cluster
57 doCheck = false;
58
59 pythonImportsCheck = [ "ipyparallel" ];
60
61 meta = with lib; {
62 description = "Interactive Parallel Computing with IPython";
63 homepage = "https://ipyparallel.readthedocs.io/";
64 changelog = "https://github.com/ipython/ipyparallel/blob/${version}/docs/source/changelog.md";
65 license = licenses.bsd3;
66 };
67}