1{ lib
2, stdenv
3, buildPythonPackage
4, cmake
5, confluent-kafka
6, cyrus_sasl
7, fetchFromGitHub
8, openssl
9, pkg-config
10, protobuf
11, pytestCheckHook
12, pythonOlder
13, rustPlatform
14, setuptools-rust
15}:
16
17buildPythonPackage rec {
18 pname = "bytewax";
19 version = "0.17.1";
20 format = "pyproject";
21
22 disabled = pythonOlder "3.7";
23
24 src = fetchFromGitHub {
25 owner = "bytewax";
26 repo = pname;
27 rev = "refs/tags/v${version}";
28 hash = "sha256-Cv2bTgs3XfYOcHK628/RgGol7S6E4WfHb7gHXXjBhig=";
29 };
30
31 env = {
32 OPENSSL_NO_VENDOR = true;
33 };
34
35 # Remove docs tests, myst-docutils in nixpkgs is not compatible with package requirements.
36 # Package uses old version.
37 patches = [ ./remove-docs-test.patch ];
38
39 cargoDeps = rustPlatform.importCargoLock {
40 lockFile = ./Cargo.lock;
41 outputHashes = {
42 "columnation-0.1.0" = "sha256-RAyZKR+sRmeWGh7QYPZnJgX9AtWqmca85HcABEFUgX8=";
43 "timely-0.12.0" = "sha256-sZuVLBDCXurIe38m4UAjEuFeh73VQ5Jawy+sr3U/HbI=";
44 };
45 };
46
47 nativeBuildInputs = [
48 cmake
49 pkg-config
50 rustPlatform.maturinBuildHook
51 rustPlatform.cargoSetupHook
52 ];
53
54 dontUseCmakeConfigure = true;
55
56 buildInputs = [
57 openssl
58 cyrus_sasl
59 protobuf
60 ];
61
62 passthru.optional-dependencies = {
63 kafka = [
64 confluent-kafka
65 ];
66 };
67
68 preCheck = ''
69 export PY_IGNORE_IMPORTMISMATCH=1
70 '';
71
72 checkInputs = [
73 pytestCheckHook
74 ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
75
76 pythonImportsCheck = [
77 "bytewax"
78 ];
79
80 meta = with lib; {
81 description = "Python Stream Processing";
82 homepage = "https://github.com/bytewax/bytewax";
83 changelog = "https://github.com/bytewax/bytewax/releases/tag/v${version}";
84 license = licenses.asl20;
85 maintainers = with maintainers; [ mslingsby kfollesdal ];
86 # mismatched type expected u8, found i8
87 broken = stdenv.isAarch64;
88 };
89}