Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at master 4.9 kB view raw
1{ 2 lib, 3 stdenv, 4 buildPythonPackage, 5 pythonOlder, 6 pythonAtLeast, 7 python, 8 fetchPypi, 9 autoPatchelfHook, 10 11 # dependencies 12 click, 13 filelock, 14 jsonschema, 15 msgpack, 16 packaging, 17 protobuf, 18 pyyaml, 19 requests, 20 watchfiles, 21 22 # optional-dependencies 23 # cgraph 24 cupy, 25 # client 26 grpcio, 27 # data 28 fsspec, 29 numpy, 30 pandas, 31 pyarrow, 32 # default 33 aiohttp, 34 aiohttp-cors, 35 colorful, 36 opencensus, 37 prometheus-client, 38 pydantic, 39 py-spy, 40 smart-open, 41 virtualenv, 42 # observability 43 memray, 44 opentelemetry-api, 45 opentelemetry-sdk, 46 opentelemetry-exporter-otlp, 47 # rllib 48 dm-tree, 49 gymnasium, 50 lz4, 51 # ormsgpack, 52 scipy, 53 typer, 54 rich, 55 # serve 56 fastapi, 57 starlette, 58 uvicorn, 59 # serve-grpc 60 pyopenssl, 61 # tune 62 tensorboardx, 63}: 64 65let 66 pname = "ray"; 67 version = "2.50.0"; 68in 69buildPythonPackage rec { 70 inherit pname version; 71 format = "wheel"; 72 73 disabled = pythonOlder "3.9" || pythonAtLeast "3.14"; 74 75 src = 76 let 77 pyShortVersion = "cp${builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion}"; 78 platforms = { 79 aarch64-darwin = "macosx_12_0_arm64"; 80 aarch64-linux = "manylinux2014_aarch64"; 81 x86_64-linux = "manylinux2014_x86_64"; 82 }; 83 # ./pkgs/development/python-modules/ray/prefetch.sh 84 # Results are in ./ray-hashes.nix 85 hashes = { 86 x86_64-linux = { 87 cp310 = "sha256-yDG/+6D28N+iW2XFuAACLHI0y+wbmKjt4X+XzIJfcA0="; 88 cp311 = "sha256-A7Zfzo7eJuKlI2XyCWfAmzo16dfSuFZkXcxoBDWkfkM="; 89 cp312 = "sha256-IUoAZIlBnHhnFcsqgbPFLIjgjqMpX0i6l6tpuIjY+Bg="; 90 cp313 = "sha256-g40spgZcElW2xw8dIEHKC2qzq6uQgzA7ZdezE4wCLeI="; 91 }; 92 aarch64-linux = { 93 cp310 = "sha256-AGKn+lY/QkZlsc3sD+6ccHCNqAfsxZFsSZJaIUOIl9A="; 94 cp311 = "sha256-sTkjnzAUDpgve8X7HMJpSKCnbJgOujce/d4/sEXQp+Q="; 95 cp312 = "sha256-z94CocsRRIF1ir/kC0uMMa/hmRUIhzciUUZiVnVpEcs="; 96 cp313 = "sha256-E1xwySvTwwUEQckFV26HG4edykhmSSGMRSQaPsRXI5k="; 97 }; 98 aarch64-darwin = { 99 cp310 = "sha256-sWTWr0IMejioMj+P83iLjFfO9GebNIg1ShI3GqwBh04="; 100 cp311 = "sha256-YZsua4gNWvEm3x382qJzFO3UPSxtYxXgHR4xGDmr/+Q="; 101 cp312 = "sha256-5oOYG1H/U0wJpIs6W2X8YYht49qKroc4I5WR2rK2fOU="; 102 cp313 = "sha256-w9qWaV4/Y70O7K1tMOx89tAwmoc44xrCcJV4ErzBzYs="; 103 }; 104 }; 105 in 106 fetchPypi { 107 inherit pname version format; 108 dist = pyShortVersion; 109 python = pyShortVersion; 110 abi = pyShortVersion; 111 platform = platforms.${stdenv.hostPlatform.system} or { }; 112 sha256 = hashes.${stdenv.hostPlatform.system}.${pyShortVersion} or { }; 113 }; 114 115 nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ 116 autoPatchelfHook 117 ]; 118 119 dependencies = [ 120 click 121 filelock 122 jsonschema 123 msgpack 124 packaging 125 protobuf 126 pyyaml 127 requests 128 watchfiles 129 ]; 130 131 optional-dependencies = lib.fix (self: { 132 adag = self.cgraph; 133 air = lib.unique (self.data ++ self.serve ++ self.tune ++ self.train); 134 all = lib.unique ( 135 self.adag 136 ++ self.air 137 ++ self.cgraph 138 ++ self.client 139 ++ self.data 140 ++ self.default 141 ++ self.observability 142 ++ self.rllib 143 ++ self.serve 144 ++ self.train 145 ++ self.tune 146 ); 147 cgraph = [ 148 cupy 149 ]; 150 client = [ grpcio ]; 151 data = [ 152 fsspec 153 numpy 154 pandas 155 pyarrow 156 ]; 157 default = [ 158 aiohttp 159 aiohttp-cors 160 colorful 161 grpcio 162 opencensus 163 prometheus-client 164 pydantic 165 py-spy 166 requests 167 smart-open 168 virtualenv 169 ]; 170 observability = [ 171 memray 172 opentelemetry-api 173 opentelemetry-sdk 174 opentelemetry-exporter-otlp 175 ]; 176 rllib = [ 177 dm-tree 178 gymnasium 179 lz4 180 # ormsgpack 181 pyyaml 182 scipy 183 typer 184 rich 185 ]; 186 serve = lib.unique ( 187 [ 188 fastapi 189 requests 190 starlette 191 uvicorn 192 watchfiles 193 ] 194 ++ self.default 195 ); 196 serve-grpc = lib.unique ( 197 [ 198 grpcio 199 pyopenssl 200 ] 201 ++ self.serve 202 ); 203 train = self.tune; 204 tune = [ 205 fsspec 206 pandas 207 pyarrow 208 requests 209 tensorboardx 210 ]; 211 }); 212 213 postInstall = '' 214 chmod +x $out/${python.sitePackages}/ray/core/src/ray/{gcs/gcs_server,raylet/raylet} 215 ''; 216 217 pythonImportsCheck = [ "ray" ]; 218 219 meta = { 220 description = "Unified framework for scaling AI and Python applications"; 221 homepage = "https://github.com/ray-project/ray"; 222 changelog = "https://github.com/ray-project/ray/releases/tag/ray-${version}"; 223 license = lib.licenses.asl20; 224 maintainers = with lib.maintainers; [ billhuang ]; 225 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; 226 platforms = [ 227 "aarch64-darwin" 228 "aarch64-linux" 229 "x86_64-linux" 230 ]; 231 }; 232}