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