1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 fetchFromGitHub,
6 pythonOlder,
7 substituteAll,
8 colorama,
9 contourpy,
10 jinja2,
11 numpy,
12 nodejs,
13 packaging,
14 pandas,
15 pillow,
16 tornado,
17 pytestCheckHook,
18 pyyaml,
19 setuptools,
20 setuptools-git-versioning,
21 xyzservices,
22 beautifulsoup4,
23 channels,
24 click,
25 colorcet,
26 coverage,
27 firefox,
28 geckodriver,
29 isort,
30 json5,
31 nbconvert,
32 networkx,
33 psutil,
34 pygments,
35 pygraphviz,
36 pytest,
37 pytest-asyncio,
38 pytest-xdist,
39 pytest-timeout,
40 requests,
41 scipy,
42 selenium,
43 toml,
44 typing-extensions,
45}:
46
47buildPythonPackage rec {
48 pname = "bokeh";
49 # update together with panel which is not straightforward
50 version = "3.4.1";
51 format = "pyproject";
52
53 disabled = pythonOlder "3.9";
54
55 src = fetchPypi {
56 inherit pname version;
57 hash = "sha256-2CSWHkJlNnsHUM5YsH5WStC4PKZLM1UhzTQh6bnxDYk=";
58 };
59
60 src_test = fetchFromGitHub {
61 owner = "bokeh";
62 repo = pname;
63 rev = "refs/tags/${version}";
64 hash = "sha256-PK9iLOCcivr4oF9Riq73dzxGfxzWRk3bdrCCpRrTv5g=";
65 };
66
67 patches = [
68 (substituteAll {
69 src = ./hardcode-nodejs-npmjs-paths.patch;
70 node_bin = "${nodejs}/bin/node";
71 npm_bin = "${nodejs}/bin/npm";
72 })
73 ];
74
75 nativeBuildInputs = [
76 colorama
77 nodejs
78 setuptools
79 setuptools-git-versioning
80 ];
81
82 nativeCheckInputs = [
83 pytestCheckHook
84 beautifulsoup4
85 channels
86 click
87 colorcet
88 coverage
89 firefox
90 geckodriver
91 isort
92 json5
93 nbconvert
94 networkx
95 psutil
96 pygments
97 pygraphviz
98 pytest
99 pytest-asyncio
100 pytest-xdist
101 pytest-timeout
102 requests
103 scipy
104 selenium
105 toml
106 typing-extensions
107 ];
108
109 propagatedBuildInputs = [
110 jinja2
111 contourpy
112 numpy
113 packaging
114 pandas
115 pillow
116 pyyaml
117 tornado
118 xyzservices
119 ];
120
121 doCheck = false; # need more work
122 pytestFlagsArray = "tests/test_defaults.py";
123 pythonImportsCheck = [ "bokeh" ];
124 preCheck = ''
125 cp -rv ''${src_test}/tests/* ./tests/
126 '';
127
128 meta = {
129 description = "Statistical and novel interactive HTML plots for Python";
130 mainProgram = "bokeh";
131 homepage = "https://github.com/bokeh/bokeh";
132 license = lib.licenses.bsd3;
133 maintainers = with lib.maintainers; [ orivej ];
134 };
135}