1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitHub,
6 fetchpatch,
7 setuptools,
8 versioneer,
9 dask,
10 distributed,
11 grpcio,
12 skein,
13 pytestCheckHook,
14}:
15
16buildPythonPackage rec {
17 pname = "dask-yarn";
18 version = "0.9";
19 pyproject = true;
20
21 disabled = pythonOlder "3.7";
22
23 src = fetchFromGitHub {
24 owner = "dask";
25 repo = "dask-yarn";
26 tag = version;
27 hash = "sha256-/BTsxQSiVQrihrCa9DE7pueyg3aPAdjd/Dt4dpUwdtM=";
28 };
29
30 patches = [
31 (fetchpatch {
32 # https://github.com/dask/dask-yarn/pull/150
33 name = "address-deprecations-introduced-in-distributed-2021-07-0";
34 url = "https://github.com/dask/dask-yarn/pull/150/commits/459848afcdc22568905ee98622c74e4071496423.patch";
35 hash = "sha256-LS46QBdiAmsp4jQq4DdYdmmk1qzx5JZNTQUlRcRwY5k=";
36 })
37 ];
38
39 postPatch = ''
40 rm versioneer.py
41 '';
42
43 build-system = [
44 setuptools
45 versioneer
46 ];
47
48 dependencies = [
49 dask
50 distributed
51 grpcio
52 skein
53 ];
54
55 nativeCheckInputs = [ pytestCheckHook ];
56
57 preCheck = ''
58 export HOME=$TMPDIR
59 '';
60
61 pythonImportsCheck = [ "dask_yarn" ];
62
63 disabledTests = [
64 # skein.exceptions.DriverError: Failed to start java process
65 "test_basic"
66 "test_adapt"
67 "test_from_specification"
68 "test_from_application_id"
69 "test_from_current"
70 "test_basic_async"
71 "test_widget_and_html_reprs"
72 ];
73
74 meta = with lib; {
75 description = "Deploy dask on YARN clusters";
76 mainProgram = "dask-yarn";
77 longDescription = ''
78 Dask-Yarn deploys Dask on YARN clusters,
79 such as are found in traditional Hadoop installations.
80 Dask-Yarn provides an easy interface to quickly start,
81 stop, and scale Dask clusters natively from Python.
82 '';
83 homepage = "https://yarn.dask.org/";
84 license = licenses.bsd3;
85 maintainers = with maintainers; [ illustris ];
86 };
87}