1{
2 lib,
3 cython,
4 async-timeout,
5 buildPythonPackage,
6 fetchFromGitHub,
7 ifaddr,
8 poetry-core,
9 pytest-asyncio,
10 pytest-codspeed,
11 pytest-cov-stub,
12 pytest-timeout,
13 pythonOlder,
14 pytestCheckHook,
15 setuptools,
16}:
17
18buildPythonPackage rec {
19 pname = "zeroconf";
20 version = "0.147.2";
21 pyproject = true;
22
23 disabled = pythonOlder "3.9";
24
25 src = fetchFromGitHub {
26 owner = "jstasiak";
27 repo = "python-zeroconf";
28 tag = version;
29 hash = "sha256-t1++u+2+Pe/61MXzq5+9ayVl7ot3RrJUGCTNtHicpF8=";
30 };
31
32 build-system = [
33 cython
34 poetry-core
35 setuptools
36 ];
37
38 dependencies = [ ifaddr ] ++ lib.optionals (pythonOlder "3.11") [ async-timeout ];
39
40 nativeCheckInputs = [
41 pytest-asyncio
42 pytest-codspeed
43 pytest-cov-stub
44 pytest-timeout
45 pytestCheckHook
46 ];
47
48 disabledTests = [
49 # OSError: [Errno 19] No such device
50 "test_close_multiple_times"
51 "test_integration_with_listener_ipv6"
52 "test_launch_and_close"
53 "test_launch_and_close_context_manager"
54 "test_launch_and_close_v4_v6"
55 ];
56
57 __darwinAllowLocalNetworking = true;
58
59 pythonImportsCheck = [
60 "zeroconf"
61 "zeroconf.asyncio"
62 ];
63
64 meta = with lib; {
65 description = "Python implementation of multicast DNS service discovery";
66 homepage = "https://github.com/python-zeroconf/python-zeroconf";
67 changelog = "https://github.com/python-zeroconf/python-zeroconf/blob/${src.tag}/CHANGELOG.md";
68 license = licenses.lgpl21Only;
69 maintainers = [ ];
70 };
71}