mmrelay 1.1.4__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mmrelay might be problematic. Click here for more details.
- {mmrelay-1.1.4/src/mmrelay.egg-info → mmrelay-1.2.0}/PKG-INFO +19 -48
- {mmrelay-1.1.4 → mmrelay-1.2.0}/README.md +7 -46
- {mmrelay-1.1.4 → mmrelay-1.2.0}/requirements.txt +6 -4
- {mmrelay-1.1.4 → mmrelay-1.2.0}/setup.py +13 -1
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/__init__.py +1 -1
- mmrelay-1.2.0/src/mmrelay/cli.py +1416 -0
- mmrelay-1.2.0/src/mmrelay/cli_utils.py +696 -0
- mmrelay-1.2.0/src/mmrelay/config.py +831 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/app.py +12 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/config.py +6 -1
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/messages.py +10 -1
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/network.py +7 -0
- mmrelay-1.2.0/src/mmrelay/e2ee_utils.py +392 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/log_utils.py +39 -5
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/main.py +96 -26
- mmrelay-1.2.0/src/mmrelay/matrix_utils.py +2322 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/meshtastic_utils.py +192 -40
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugin_loader.py +76 -44
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/base_plugin.py +16 -4
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/weather_plugin.py +108 -11
- mmrelay-1.2.0/src/mmrelay/tools/sample-docker-compose-prebuilt.yaml +80 -0
- mmrelay-1.2.0/src/mmrelay/tools/sample-docker-compose.yaml +65 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/tools/sample_config.yaml +29 -4
- {mmrelay-1.1.4 → mmrelay-1.2.0/src/mmrelay.egg-info}/PKG-INFO +19 -48
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay.egg-info/SOURCES.txt +12 -1
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay.egg-info/requires.txt +6 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_async_patterns.py +41 -27
- mmrelay-1.2.0/tests/test_cli.py +1295 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_cli_edge_cases.py +81 -79
- mmrelay-1.2.0/tests/test_cli_utils.py +391 -0
- mmrelay-1.2.0/tests/test_config.py +795 -0
- mmrelay-1.2.0/tests/test_config_checker.py +853 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_config_edge_cases.py +24 -13
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_constants.py +8 -1
- mmrelay-1.2.0/tests/test_core_utils_coverage.py +229 -0
- mmrelay-1.2.0/tests/test_e2ee_encryption.py +428 -0
- mmrelay-1.2.0/tests/test_e2ee_integration.py +374 -0
- mmrelay-1.2.0/tests/test_e2ee_runner.py +214 -0
- mmrelay-1.2.0/tests/test_e2ee_unified.py +532 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_error_boundaries.py +55 -121
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_integration_scenarios.py +127 -173
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_log_utils.py +92 -0
- mmrelay-1.2.0/tests/test_main.py +1323 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_map_plugin.py +87 -44
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_matrix_utils.py +943 -73
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_matrix_utils_edge_cases.py +45 -22
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_mesh_relay_plugin.py +16 -6
- mmrelay-1.2.0/tests/test_meshtastic_broadcast_enabled.py +120 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_meshtastic_utils.py +609 -80
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_meshtastic_utils_edge_cases.py +75 -57
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_message_queue.py +35 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_message_queue_edge_cases.py +1 -1
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_performance_stress.py +295 -325
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_plugin_loader.py +13 -10
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_plugin_loader_edge_cases.py +11 -5
- mmrelay-1.2.0/tests/test_runtime_no_errors.py +63 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_setup_utils.py +1 -1
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_setup_utils_edge_cases.py +1 -1
- mmrelay-1.2.0/tests/test_tools_init.py +52 -0
- mmrelay-1.2.0/tests/test_weather_plugin.py +1110 -0
- mmrelay-1.1.4/src/mmrelay/cli.py +0 -489
- mmrelay-1.1.4/src/mmrelay/config.py +0 -270
- mmrelay-1.1.4/src/mmrelay/config_checker.py +0 -162
- mmrelay-1.1.4/src/mmrelay/matrix_utils.py +0 -1347
- mmrelay-1.1.4/src/mmrelay/tools/sample-docker-compose.yaml +0 -39
- mmrelay-1.1.4/tests/test_cli.py +0 -577
- mmrelay-1.1.4/tests/test_config.py +0 -360
- mmrelay-1.1.4/tests/test_config_checker.py +0 -596
- mmrelay-1.1.4/tests/test_main.py +0 -750
- mmrelay-1.1.4/tests/test_weather_plugin.py +0 -526
- {mmrelay-1.1.4 → mmrelay-1.2.0}/LICENSE +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/MANIFEST.in +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/pyproject.toml +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/setup.cfg +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/__init__.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/database.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/formats.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/constants/queue.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/db_utils.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/message_queue.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/__init__.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/debug_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/drop_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/health_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/help_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/map_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/mesh_relay_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/nodes_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/ping_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/plugins/telemetry_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/setup_utils.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/tools/__init__.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/tools/mmrelay.service +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay/tools/sample.env +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay.egg-info/dependency_links.txt +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay.egg-info/entry_points.txt +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/src/mmrelay.egg-info/top_level.txt +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_base_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_db_utils.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_db_utils_edge_cases.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_debug_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_drop_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_health_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_help_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_imports.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_network_reliability.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_nodes_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_ping_plugin.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_prefix_customization.py +0 -0
- {mmrelay-1.1.4 → mmrelay-1.2.0}/tests/test_telemetry_plugin.py +0 -0
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mmrelay
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Bridge between Meshtastic mesh networks and Matrix chat rooms
|
|
5
5
|
Home-page: https://github.com/jeremiah-k/meshtastic-matrix-relay
|
|
6
6
|
Author: Geoff Whittington, Jeremiah K., and contributors
|
|
7
7
|
Author-email: jeremiahk@gmx.com
|
|
8
8
|
Project-URL: Bug Tracker, https://github.com/jeremiah-k/meshtastic-matrix-relay/issues
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
10
14
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
11
15
|
Classifier: Operating System :: OS Independent
|
|
12
16
|
Classifier: Development Status :: 4 - Beta
|
|
13
17
|
Classifier: Topic :: Communications
|
|
14
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.9
|
|
15
19
|
Description-Content-Type: text/markdown
|
|
16
20
|
License-File: LICENSE
|
|
17
21
|
Requires-Dist: meshtastic>=2.6.4
|
|
@@ -20,12 +24,17 @@ Requires-Dist: matrix-nio==0.25.2
|
|
|
20
24
|
Requires-Dist: matplotlib==3.10.1
|
|
21
25
|
Requires-Dist: requests==2.32.4
|
|
22
26
|
Requires-Dist: markdown==3.8.2
|
|
27
|
+
Requires-Dist: bleach==6.2.0
|
|
23
28
|
Requires-Dist: haversine==2.9.0
|
|
24
29
|
Requires-Dist: schedule==1.2.2
|
|
25
30
|
Requires-Dist: platformdirs==4.3.8
|
|
26
31
|
Requires-Dist: py-staticmaps>=0.4.0
|
|
32
|
+
Requires-Dist: psutil>=5.8.0
|
|
27
33
|
Requires-Dist: rich==14.1.0
|
|
28
34
|
Requires-Dist: setuptools==80.9.0
|
|
35
|
+
Provides-Extra: e2e
|
|
36
|
+
Requires-Dist: matrix-nio[e2e]==0.25.2; extra == "e2e"
|
|
37
|
+
Requires-Dist: python-olm; extra == "e2e"
|
|
29
38
|
Dynamic: author
|
|
30
39
|
Dynamic: author-email
|
|
31
40
|
Dynamic: classifier
|
|
@@ -34,6 +43,7 @@ Dynamic: description-content-type
|
|
|
34
43
|
Dynamic: home-page
|
|
35
44
|
Dynamic: license-file
|
|
36
45
|
Dynamic: project-url
|
|
46
|
+
Dynamic: provides-extra
|
|
37
47
|
Dynamic: requires-dist
|
|
38
48
|
Dynamic: requires-python
|
|
39
49
|
Dynamic: summary
|
|
@@ -55,59 +65,20 @@ A powerful and easy-to-use relay between Meshtastic devices and Matrix chat room
|
|
|
55
65
|
- Configurable through a simple YAML file
|
|
56
66
|
- Supports mapping multiple rooms and channels 1:1
|
|
57
67
|
- Relays messages to/from an MQTT broker, if configured in the Meshtastic firmware
|
|
58
|
-
- ✨️ _Bidirectional replies and reactions support_ ✨️
|
|
59
|
-
- ✨️ _Native Docker support_ ✨️
|
|
68
|
+
- ✨️ _Bidirectional replies and reactions support_ ✨️
|
|
69
|
+
- ✨️ _Native Docker support_ ✨️
|
|
70
|
+
- 🔐 **Matrix End-to-End Encryption (E2EE) support** 🔐 **NEW in v1.2!**
|
|
60
71
|
|
|
61
|
-
|
|
72
|
+
**MMRelay v1.2** introduces full **Matrix End-to-End Encryption** support for secure communication in encrypted rooms. Messages are automatically encrypted/decrypted when communicating with encrypted Matrix rooms, with simple setup using `mmrelay auth login` or automatic credentials creation from config.yaml.
|
|
62
73
|
|
|
63
74
|
## Documentation
|
|
64
75
|
|
|
65
76
|
Visit our [Wiki](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki) for comprehensive guides and information.
|
|
66
77
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Quick Start
|
|
72
|
-
|
|
73
|
-
MMRelay runs on Linux, macOS, and Windows.
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# Install using pipx for isolated installation (recommended)
|
|
77
|
-
pipx install mmrelay
|
|
78
|
-
|
|
79
|
-
# Generate a sample configuration file & then edit it
|
|
80
|
-
mmrelay --generate-config
|
|
81
|
-
|
|
82
|
-
# Start the relay (without --install-service to run manually)
|
|
83
|
-
mmrelay --install-service
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
For detailed installation and configuration instructions, see the [Installation Guide](docs/INSTRUCTIONS.md).
|
|
87
|
-
|
|
88
|
-
## Docker
|
|
78
|
+
MMRelay supports multiple deployment methods including Docker, pip installation, and standalone executables. For complete setup instructions and all deployment options, see:
|
|
89
79
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# Quick setup with Docker
|
|
94
|
-
make setup # Copy config and open editor (first time)
|
|
95
|
-
make build # Build the Docker image
|
|
96
|
-
make run # Start the container
|
|
97
|
-
make logs # View logs
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Docker provides isolated environment, easy deployment, automatic restarts, and volume persistence.
|
|
101
|
-
|
|
102
|
-
For detailed Docker setup instructions, see the [Docker Guide](docs/DOCKER.md).
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Windows Installer
|
|
107
|
-
|
|
108
|
-

|
|
109
|
-
|
|
110
|
-
The latest installer is available in the [releases section](https://github.com/jeremiah-k/meshtastic-matrix-relay/releases).
|
|
80
|
+
- [Installation Instructions](docs/INSTRUCTIONS.md) - Setup and configuration guide
|
|
81
|
+
- [Docker Guide](docs/DOCKER.md) - Docker deployment methods
|
|
111
82
|
|
|
112
83
|
---
|
|
113
84
|
|
|
@@ -15,59 +15,20 @@ A powerful and easy-to-use relay between Meshtastic devices and Matrix chat room
|
|
|
15
15
|
- Configurable through a simple YAML file
|
|
16
16
|
- Supports mapping multiple rooms and channels 1:1
|
|
17
17
|
- Relays messages to/from an MQTT broker, if configured in the Meshtastic firmware
|
|
18
|
-
- ✨️ _Bidirectional replies and reactions support_ ✨️
|
|
19
|
-
- ✨️ _Native Docker support_ ✨️
|
|
18
|
+
- ✨️ _Bidirectional replies and reactions support_ ✨️
|
|
19
|
+
- ✨️ _Native Docker support_ ✨️
|
|
20
|
+
- 🔐 **Matrix End-to-End Encryption (E2EE) support** 🔐 **NEW in v1.2!**
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
**MMRelay v1.2** introduces full **Matrix End-to-End Encryption** support for secure communication in encrypted rooms. Messages are automatically encrypted/decrypted when communicating with encrypted Matrix rooms, with simple setup using `mmrelay auth login` or automatic credentials creation from config.yaml.
|
|
22
23
|
|
|
23
24
|
## Documentation
|
|
24
25
|
|
|
25
26
|
Visit our [Wiki](https://github.com/jeremiah-k/meshtastic-matrix-relay/wiki) for comprehensive guides and information.
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Quick Start
|
|
32
|
-
|
|
33
|
-
MMRelay runs on Linux, macOS, and Windows.
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# Install using pipx for isolated installation (recommended)
|
|
37
|
-
pipx install mmrelay
|
|
38
|
-
|
|
39
|
-
# Generate a sample configuration file & then edit it
|
|
40
|
-
mmrelay --generate-config
|
|
41
|
-
|
|
42
|
-
# Start the relay (without --install-service to run manually)
|
|
43
|
-
mmrelay --install-service
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
For detailed installation and configuration instructions, see the [Installation Guide](docs/INSTRUCTIONS.md).
|
|
47
|
-
|
|
48
|
-
## Docker
|
|
28
|
+
MMRelay supports multiple deployment methods including Docker, pip installation, and standalone executables. For complete setup instructions and all deployment options, see:
|
|
49
29
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Quick setup with Docker
|
|
54
|
-
make setup # Copy config and open editor (first time)
|
|
55
|
-
make build # Build the Docker image
|
|
56
|
-
make run # Start the container
|
|
57
|
-
make logs # View logs
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Docker provides isolated environment, easy deployment, automatic restarts, and volume persistence.
|
|
61
|
-
|
|
62
|
-
For detailed Docker setup instructions, see the [Docker Guide](docs/DOCKER.md).
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Windows Installer
|
|
67
|
-
|
|
68
|
-

|
|
69
|
-
|
|
70
|
-
The latest installer is available in the [releases section](https://github.com/jeremiah-k/meshtastic-matrix-relay/releases).
|
|
30
|
+
- [Installation Instructions](docs/INSTRUCTIONS.md) - Setup and configuration guide
|
|
31
|
+
- [Docker Guide](docs/DOCKER.md) - Docker deployment methods
|
|
71
32
|
|
|
72
33
|
---
|
|
73
34
|
|
|
@@ -4,6 +4,7 @@ matrix-nio==0.25.2
|
|
|
4
4
|
matplotlib==3.10.1
|
|
5
5
|
requests==2.32.4
|
|
6
6
|
markdown==3.8.2
|
|
7
|
+
bleach==6.2.0
|
|
7
8
|
haversine==2.9.0
|
|
8
9
|
schedule==1.2.2
|
|
9
10
|
platformdirs==4.3.8
|
|
@@ -13,8 +14,9 @@ rich==14.1.0
|
|
|
13
14
|
setuptools==80.9.0
|
|
14
15
|
|
|
15
16
|
# Testing and coverage
|
|
16
|
-
coverage==7.
|
|
17
|
-
pytest==8.
|
|
18
|
-
pytest-cov==6.
|
|
19
|
-
pytest-asyncio==
|
|
17
|
+
coverage==7.10.3
|
|
18
|
+
pytest==8.4.1
|
|
19
|
+
pytest-cov==6.2.1
|
|
20
|
+
pytest-asyncio==1.1.0
|
|
20
21
|
pytest-env==1.1.5
|
|
22
|
+
pytest-timeout==2.4.0
|
|
@@ -33,12 +33,16 @@ setup(
|
|
|
33
33
|
},
|
|
34
34
|
classifiers=[
|
|
35
35
|
"Programming Language :: Python :: 3",
|
|
36
|
+
"Programming Language :: Python :: 3.9",
|
|
37
|
+
"Programming Language :: Python :: 3.10",
|
|
38
|
+
"Programming Language :: Python :: 3.11",
|
|
39
|
+
"Programming Language :: Python :: 3.12",
|
|
36
40
|
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
|
37
41
|
"Operating System :: OS Independent",
|
|
38
42
|
"Development Status :: 4 - Beta",
|
|
39
43
|
"Topic :: Communications",
|
|
40
44
|
],
|
|
41
|
-
python_requires=">=3.
|
|
45
|
+
python_requires=">=3.9",
|
|
42
46
|
install_requires=[
|
|
43
47
|
"meshtastic>=2.6.4",
|
|
44
48
|
"Pillow==11.3.0",
|
|
@@ -46,13 +50,21 @@ setup(
|
|
|
46
50
|
"matplotlib==3.10.1",
|
|
47
51
|
"requests==2.32.4",
|
|
48
52
|
"markdown==3.8.2",
|
|
53
|
+
"bleach==6.2.0",
|
|
49
54
|
"haversine==2.9.0",
|
|
50
55
|
"schedule==1.2.2",
|
|
51
56
|
"platformdirs==4.3.8",
|
|
52
57
|
"py-staticmaps>=0.4.0",
|
|
58
|
+
"psutil>=5.8.0",
|
|
53
59
|
"rich==14.1.0",
|
|
54
60
|
"setuptools==80.9.0",
|
|
55
61
|
],
|
|
62
|
+
extras_require={
|
|
63
|
+
"e2e": [
|
|
64
|
+
"matrix-nio[e2e]==0.25.2",
|
|
65
|
+
"python-olm",
|
|
66
|
+
],
|
|
67
|
+
},
|
|
56
68
|
packages=find_packages(where="src"),
|
|
57
69
|
package_dir={"": "src"},
|
|
58
70
|
include_package_data=True,
|