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.3";
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-h8OuDmm9I8lElhAGSpPx8sPUTY+EnFp2VXOYrYjiYNk=";
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 ];
102
103 meta = with lib; {
104 description = "Python API for talking to Meshtastic devices";
105 homepage = "https://github.com/meshtastic/Meshtastic-python";
106 license = with licenses; [ asl20 ];
107 maintainers = with maintainers; [ fab ];
108 };
109}