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