1{
2 lib,
3 stdenv,
4 azure-identity,
5 azure-storage-blob,
6 billiard,
7 buildPythonPackage,
8 click-didyoumean,
9 click-plugins,
10 click-repl,
11 click,
12 fetchFromGitHub,
13 gevent,
14 google-cloud-firestore,
15 google-cloud-storage,
16 kombu,
17 moto,
18 msgpack,
19 pymongo,
20 redis,
21 pydantic,
22 pytest-celery,
23 pytest-click,
24 pytest-subtests,
25 pytest-timeout,
26 pytest-xdist,
27 pytestCheckHook,
28 python-dateutil,
29 pyyaml,
30 setuptools,
31 vine,
32}:
33
34buildPythonPackage rec {
35 pname = "celery";
36 version = "5.5.3";
37 pyproject = true;
38
39 src = fetchFromGitHub {
40 owner = "celery";
41 repo = "celery";
42 tag = "v${version}";
43 hash = "sha256-+sickqRfSkBxhcO0W9na6Uov4kZ7S5oqpXXKX0iRQ0w=";
44 };
45
46 build-system = [ setuptools ];
47
48 dependencies = [
49 billiard
50 click
51 click-didyoumean
52 click-plugins
53 click-repl
54 kombu
55 python-dateutil
56 vine
57 ];
58
59 optional-dependencies = {
60 azureblockblob = [
61 azure-identity
62 azure-storage-blob
63 ];
64 gevent = [ gevent ];
65 gcs = [
66 google-cloud-firestore
67 google-cloud-storage
68 ];
69 mongodb = [ pymongo ];
70 msgpack = [ msgpack ];
71 yaml = [ pyyaml ];
72 redis = [ redis ];
73 pydantic = [ pydantic ];
74 };
75
76 nativeCheckInputs = [
77 moto
78 pytest-celery
79 pytest-click
80 pytest-subtests
81 pytest-timeout
82 pytest-xdist
83 pytestCheckHook
84 ]
85 ++ lib.flatten (builtins.attrValues optional-dependencies);
86
87 disabledTestPaths = [
88 # test_eventlet touches network
89 "t/unit/concurrency/test_eventlet.py"
90 # test_multi tries to create directories under /var
91 "t/unit/bin/test_multi.py"
92 "t/unit/apps/test_multi.py"
93 # Test requires moto<5
94 "t/unit/backends/test_s3.py"
95 ];
96
97 disabledTests = [
98 "msgpack"
99 "test_check_privileges_no_fchown"
100 # seems to only fail on higher core counts
101 # AssertionError: assert 3 == 0
102 "test_setup_security_disabled_serializers"
103 # Test is flaky, especially on hydra
104 "test_ready"
105 # Tests fail with pytest-xdist
106 "test_itercapture_limit"
107 "test_stamping_headers_in_options"
108 "test_stamping_with_replace"
109
110 # Flaky: Unclosed temporary file handle under heavy load (as in nixpkgs-review)
111 "test_check_privileges_without_c_force_root_and_no_group_entry"
112 ]
113 ++ lib.optionals stdenv.hostPlatform.isDarwin [
114 # Too many open files on hydra
115 "test_cleanup"
116 "test_with_autoscaler_file_descriptor_safety"
117 "test_with_file_descriptor_safety"
118 ];
119
120 pythonImportsCheck = [ "celery" ];
121
122 meta = {
123 description = "Distributed task queue";
124 homepage = "https://github.com/celery/celery/";
125 changelog = "https://github.com/celery/celery/releases/tag/v${version}";
126 license = lib.licenses.bsd3;
127 maintainers = with lib.maintainers; [ fab ];
128 mainProgram = "celery";
129 };
130}