1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 isPyPy,
6
7 # build-system
8 cffi,
9 cython,
10 cmake,
11 ninja,
12 packaging,
13 pathspec,
14 scikit-build-core,
15
16 # checks
17 pytestCheckHook,
18 pythonOlder,
19 tornado,
20 libsodium,
21 zeromq,
22 pytest-asyncio,
23}:
24
25buildPythonPackage rec {
26 pname = "pyzmq";
27 version = "26.2.0";
28 pyproject = true;
29
30 disabled = pythonOlder "3.6";
31
32 src = fetchPypi {
33 inherit pname version;
34 hash = "sha256-BwZywlhYHI5PZAtRWSl1gKmXSwJgQ71KsEcL6e0yTx8=";
35 };
36
37 build-system = [
38 cmake
39 ninja
40 packaging
41 pathspec
42 scikit-build-core
43 ] ++ (if isPyPy then [ cffi ] else [ cython ]);
44
45 dontUseCmakeConfigure = true;
46
47 buildInputs = [
48 libsodium
49 zeromq
50 ];
51
52 dependencies = lib.optionals isPyPy [ cffi ];
53
54 nativeCheckInputs = [
55 pytestCheckHook
56 tornado
57 pytest-asyncio
58 ];
59
60 pythonImportsCheck = [ "zmq" ];
61
62 preCheck = ''
63 rm -r zmq
64 '';
65
66 disabledTests = [
67 # Tests hang
68 "test_socket"
69 "test_monitor"
70 # https://github.com/zeromq/pyzmq/issues/1272
71 "test_cython"
72 # Test fails
73 "test_mockable"
74 # Issues with the sandbox
75 "TestFutureSocket"
76 "TestIOLoop"
77 "TestPubLog"
78 ];
79
80 # Some of the tests use localhost networking.
81 __darwinAllowLocalNetworking = true;
82
83 meta = with lib; {
84 description = "Python bindings for ØMQ";
85 homepage = "https://pyzmq.readthedocs.io/";
86 license = with licenses; [
87 bsd3 # or
88 lgpl3Only
89 ];
90 maintainers = [ ];
91 };
92}