Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib
2, buildPythonPackage
3, dotmap
4, fetchFromGitHub
5, pexpect
6, protobuf
7, pygatt
8, pypubsub
9, pyqrcode
10, pyserial
11, pytestCheckHook
12, pythonOlder
13, pyyaml
14, tabulate
15, pytap2
16, timeago
17}:
18
19buildPythonPackage rec {
20 pname = "meshtastic";
21 version = "2.0.6";
22 format = "setuptools";
23
24 disabled = pythonOlder "3.7";
25
26 src = fetchFromGitHub {
27 owner = "meshtastic";
28 repo = "Meshtastic-python";
29 rev = "refs/tags/${version}";
30 hash = "sha256-PN09TaJZR/REQPIgrm9XR+mXvR1evMAWGQziAzpg+fE=";
31 };
32
33 propagatedBuildInputs = [
34 dotmap
35 pexpect
36 protobuf
37 pygatt
38 pypubsub
39 pyqrcode
40 pyserial
41 pyyaml
42 tabulate
43 timeago
44 ];
45
46 passthru.optional-dependencies = {
47 tunnel = [
48 pytap2
49 ];
50 };
51
52 checkInputs = [
53 pytap2
54 pytestCheckHook
55 ];
56
57 preCheck = ''
58 export PATH="$PATH:$out/bin";
59 '';
60
61 pythonImportsCheck = [
62 "meshtastic"
63 ];
64
65 disabledTests = [
66 # AttributeError: 'HardwareMessage'...
67 "test_handleFromRadio_with_my_info"
68 "test_handleFromRadio_with_node_info"
69 "test_main_ch_longsfast_on_non_primary_channel"
70 "test_main_ch_set_name_with_ch_index"
71 "test_main_configure_with_camel_case_keys"
72 "test_main_configure_with_snake_case"
73 "test_main_export_config_called_from_main"
74 "test_main_export_config_use_camel"
75 "test_main_export_config"
76 "test_main_get_with_invalid"
77 "test_main_get_with_valid_values_camel"
78 "test_main_getPref_invalid_field_camel"
79 "test_main_getPref_invalid_field"
80 "test_main_getPref_valid_field_bool_camel"
81 "test_main_getPref_valid_field_bool"
82 "test_main_getPref_valid_field_camel"
83 "test_main_getPref_valid_field_string_camel"
84 "test_main_getPref_valid_field_string"
85 "test_main_getPref_valid_field"
86 "test_main_set_invalid_wifi_passwd"
87 "test_main_set_valid_camel_case"
88 "test_main_set_valid_wifi_passwd"
89 "test_main_set_valid"
90 "test_main_set_with_invalid"
91 "test_main_setPref_ignore_incoming_0"
92 "test_main_setPref_ignore_incoming_123"
93 "test_main_setPref_invalid_field_camel"
94 "test_main_setPref_invalid_field"
95 "test_main_setPref_valid_field_int_as_string"
96 "test_readGPIOs"
97 "test_setURL_empty_url"
98 "test_watchGPIOs"
99 "test_writeConfig_with_no_radioConfig"
100 "test_writeGPIOs"
101 "test_reboot"
102 "test_shutdown"
103 ];
104
105 meta = with lib; {
106 description = "Python API for talking to Meshtastic devices";
107 homepage = "https://github.com/meshtastic/Meshtastic-python";
108 changelog = "https://github.com/meshtastic/python/releases/tag/${version}";
109 license = with licenses; [ asl20 ];
110 maintainers = with maintainers; [ fab ];
111 };
112}