pamoja 0.1.15__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.
@@ -0,0 +1,13 @@
1
+ # Native extensions are built per platform, not committed.
2
+ *.so
3
+ *.pyd
4
+ *.dylib
5
+
6
+ # Build and packaging output.
7
+ dist/
8
+ wheels/
9
+ target/
10
+
11
+ # Local virtual environments.
12
+ .venv/
13
+ venv/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Anthony Wiedman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
pamoja-0.1.15/PKG-INFO ADDED
@@ -0,0 +1,112 @@
1
+ Metadata-Version: 2.5
2
+ Name: pamoja
3
+ Version: 0.1.15
4
+ Summary: The whole pamoja framework in one package: every capability of one memory-safe Rust core, behind an idiomatic Python facade, for IoT, robotics, and drones.
5
+ Project-URL: Repository, https://github.com/molexxxx/pamoja
6
+ Project-URL: Documentation, https://pamoja.molex.cloud/docs/
7
+ Author: molexxxx
8
+ License: MIT
9
+ License-File: LICENSE-MIT
10
+ Keywords: drones,embedded,iot,mqtt,pamoja,robotics
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Typing :: Typed
15
+ Requires-Python: >=3.10
16
+ Requires-Dist: pamoja-actuators==0.1.15
17
+ Requires-Dist: pamoja-audit==0.1.15
18
+ Requires-Dist: pamoja-bus==0.1.15
19
+ Requires-Dist: pamoja-can==0.1.15
20
+ Requires-Dist: pamoja-coap==0.1.15
21
+ Requires-Dist: pamoja-codec==0.1.15
22
+ Requires-Dist: pamoja-core==0.1.15
23
+ Requires-Dist: pamoja-gpio==0.1.15
24
+ Requires-Dist: pamoja-kit==0.1.15
25
+ Requires-Dist: pamoja-ladder==0.1.15
26
+ Requires-Dist: pamoja-loopback==0.1.15
27
+ Requires-Dist: pamoja-lora==0.1.15
28
+ Requires-Dist: pamoja-lorawan==0.1.15
29
+ Requires-Dist: pamoja-mavlink==0.1.15
30
+ Requires-Dist: pamoja-mesh==0.1.15
31
+ Requires-Dist: pamoja-modbus==0.1.15
32
+ Requires-Dist: pamoja-mqtt==0.1.15
33
+ Requires-Dist: pamoja-native==0.1.15
34
+ Requires-Dist: pamoja-power==0.1.15
35
+ Requires-Dist: pamoja-profile==0.1.15
36
+ Requires-Dist: pamoja-ros2==0.1.15
37
+ Requires-Dist: pamoja-routing==0.1.15
38
+ Requires-Dist: pamoja-security==0.1.15
39
+ Requires-Dist: pamoja-sensors==0.1.15
40
+ Requires-Dist: pamoja-serial==0.1.15
41
+ Requires-Dist: pamoja-session==0.1.15
42
+ Requires-Dist: pamoja-sim==0.1.15
43
+ Requires-Dist: pamoja-sync==0.1.15
44
+ Requires-Dist: pamoja-telemetry==0.1.15
45
+ Requires-Dist: pamoja-update==0.1.15
46
+ Requires-Dist: pamoja-zenoh==0.1.15
47
+ Description-Content-Type: text/markdown
48
+
49
+ # pamoja
50
+
51
+ The whole pamoja framework in one package: every capability of one memory-safe Rust core, behind an idiomatic Python facade, for IoT, robotics, and drones. Each capability is also its own distribution, so an application that needs one thing can depend on `pamoja-mqtt` alone; this package depends on all of them.
52
+
53
+ [![API reference](https://raw.githubusercontent.com/molexxxx/pamoja/main/.github/badges/btn-api.svg)](https://pamoja.molex.cloud/docs/reference/python/pamoja.html)
54
+ [![documentation](https://raw.githubusercontent.com/molexxxx/pamoja/main/.github/badges/btn-docs.svg)](https://pamoja.molex.cloud/docs/)
55
+
56
+ ## Install
57
+
58
+ ```sh
59
+ pip install pamoja
60
+ ```
61
+
62
+ ```python
63
+ from pamoja import mqtt, security
64
+ ```
65
+
66
+ ## What it installs
67
+
68
+ Each module name opens its reference.
69
+
70
+ | Distribution | Module | What it covers |
71
+ | --- | --- | --- |
72
+ | `pamoja-security` | [`pamoja.security`](https://pamoja.molex.cloud/docs/reference/python/pamoja/security.html) | ed25519 device identity: sign a reading and verify it, so a gateway can prove it is authentic |
73
+ | `pamoja-codec` | [`pamoja.codec`](https://pamoja.molex.cloud/docs/reference/python/pamoja/codec.html) | CBOR, JSON, and raw codecs behind one trait, delta and varint batch packing, and an f32 quantizer for metered links |
74
+ | `pamoja-kit` | [`pamoja.kit`](https://pamoja.molex.cloud/docs/reference/python/pamoja/kit.html) | Plain-language helper math: smoothing, calibration, PID and thermostat control, trend and surge prediction, rolling windows, kinematics, and geo |
75
+ | `pamoja-serial` | [`pamoja.serial`](https://pamoja.molex.cloud/docs/reference/python/pamoja/serial.html) | SLIP and COBS byte stuffing with streaming decoders, so a UART byte stream carries discrete packets |
76
+ | `pamoja-modbus` | [`pamoja.modbus`](https://pamoja.molex.cloud/docs/reference/python/pamoja/modbus.html) | Modbus RTU requests and replies with CRC-16/MODBUS for RS485 field devices |
77
+ | `pamoja-can` | [`pamoja.can`](https://pamoja.molex.cloud/docs/reference/python/pamoja/can.html) | CAN 2.0 and CAN-FD frames with 11- and 29-bit identifiers, plus J1939 decode and compose |
78
+ | `pamoja-gpio` | [`pamoja.gpio`](https://pamoja.molex.cloud/docs/reference/python/pamoja/gpio.html) | I2C address frames with reserved-range checks, the four SPI clock modes, and active-high or active-low pins |
79
+ | `pamoja-sensors` | [`pamoja.sensors`](https://pamoja.molex.cloud/docs/reference/python/pamoja/sensors.html) | Datasheet-anchored decoders for the BME280, DS18B20, INA219, and ADS1115 |
80
+ | `pamoja-actuators` | [`pamoja.actuators`](https://pamoja.molex.cloud/docs/reference/python/pamoja/actuators.html) | PCA9685 PWM and servo pulses, and stepper coil sequencing |
81
+ | `pamoja-lora` | [`pamoja.lora`](https://pamoja.molex.cloud/docs/reference/python/pamoja/lora.html) | Time-on-air, duty-cycle off-time, and the regional channel plans a LoRa node must keep to |
82
+ | `pamoja-lorawan` | [`pamoja.lorawan`](https://pamoja.molex.cloud/docs/reference/python/pamoja/lorawan.html) | LoRaWAN 1.0.x MAC framing, AES-CMAC and AES encryption, and both halves of the OTAA join |
83
+ | `pamoja-mesh` | [`pamoja.mesh`](https://pamoja.molex.cloud/docs/reference/python/pamoja/mesh.html) | Addressed, hop-limited, CRC-checked frames and duplicate suppression that floods a packet exactly once |
84
+ | `pamoja-routing` | [`pamoja.routing`](https://pamoja.molex.cloud/docs/reference/python/pamoja/routing.html) | Reverse-path routing that learns the cheapest route from overheard traffic |
85
+ | `pamoja-mavlink` | [`pamoja.mavlink`](https://pamoja.molex.cloud/docs/reference/python/pamoja/mavlink.html) | MAVLink v1 and v2 framing, signing, named message fields, and the mission, command, and offboard protocols |
86
+ | `pamoja-audit` | [`pamoja.audit`](https://pamoja.molex.cloud/docs/reference/python/pamoja/audit.html) | A tamper-evident, hash-chained log; altering, reordering, or dropping a record breaks verification |
87
+ | `pamoja-session` | [`pamoja.session`](https://pamoja.molex.cloud/docs/reference/python/pamoja/session.html) | X25519 key agreement, HKDF, and ChaCha20-Poly1305 with an anti-replay window, with no TLS stack |
88
+ | `pamoja-update` | [`pamoja.update`](https://pamoja.molex.cloud/docs/reference/python/pamoja/update.html) | Signed firmware manifests, streaming image verification, and A/B slots that fall back on their own |
89
+ | `pamoja-power` | [`pamoja.power`](https://pamoja.molex.cloud/docs/reference/python/pamoja/power.html) | Duty cycling and an energy-aware governor that stretches work as the battery drains |
90
+ | `pamoja-telemetry` | [`pamoja.telemetry`](https://pamoja.molex.cloud/docs/reference/python/pamoja/telemetry.html) | Observability that ships only what is worth the bytes as link cost rises, while counting everything |
91
+ | `pamoja-mqtt` | [`pamoja.mqtt`](https://pamoja.molex.cloud/docs/reference/python/pamoja/mqtt.html) | An MQTT client with the topic and wildcard rules, as the core transport |
92
+ | `pamoja-coap` | [`pamoja.coap`](https://pamoja.molex.cloud/docs/reference/python/pamoja/coap.html) | A CoAP client over UDP with confirmable delivery and observe |
93
+ | `pamoja-loopback` | [`pamoja.loopback`](https://pamoja.molex.cloud/docs/reference/python/pamoja/loopback.html) | An in-process transport with topic matching and a fault injector, for testing with no broker |
94
+ | `pamoja-sync` | [`pamoja.sync`](https://pamoja.molex.cloud/docs/reference/python/pamoja/sync.html) | Offline-first queues: in memory, and a crash-safe on-disk queue that survives power loss |
95
+ | `pamoja-ladder` | [`pamoja.ladder`](https://pamoja.molex.cloud/docs/reference/python/pamoja/ladder.html) | Cheapest reachable link first, buffering to a store when every link is down |
96
+ | `pamoja-bus` | [`pamoja.bus`](https://pamoja.molex.cloud/docs/reference/python/pamoja/bus.html) | An in-memory typed publish and subscribe event bus |
97
+ | `pamoja-core` | [`pamoja.core`](https://pamoja.molex.cloud/docs/reference/python/pamoja/core.html) | The transport every link shares (send, receive, subscribe, and a faulty wrapper for tests) and the runtime version |
98
+ | `pamoja-sim` | [`pamoja.sim`](https://pamoja.molex.cloud/docs/reference/python/pamoja/sim.html) | Noisy and replay sensors, a recording actuator, and a simulated robot that dead-reckons its pose |
99
+ | `pamoja-profile` | [`pamoja.profile`](https://pamoja.molex.cloud/docs/reference/python/pamoja/profile.html) | Named, ready-to-run device profiles from plain data or a JSON manifest |
100
+ | `pamoja-ros2` | [`pamoja.ros2`](https://pamoja.molex.cloud/docs/reference/python/pamoja/ros2.html) | ROS 2 names, RIHS01 type hashes, CDR encoding, and rmw_zenoh key assembly, with no ROS 2 installed |
101
+ | `pamoja-zenoh` | [`pamoja.zenoh`](https://pamoja.molex.cloud/docs/reference/python/pamoja/zenoh.html) | Zenoh key expressions: validity, canonical form, and wildcard matching |
102
+
103
+ All of them run on `pamoja-native`, the compiled engine, which is one extension whichever distributions you install.
104
+
105
+ ## Documentation
106
+
107
+ - [The guides](https://pamoja.molex.cloud/docs/), one page per capability with the same example in Rust, TypeScript, Python, and C#.
108
+ - [The Python reference](https://pamoja.molex.cloud/docs/reference/python/pamoja.html), generated from every module.
109
+
110
+ ## License
111
+
112
+ MIT
@@ -0,0 +1,64 @@
1
+ # pamoja
2
+
3
+ The whole pamoja framework in one package: every capability of one memory-safe Rust core, behind an idiomatic Python facade, for IoT, robotics, and drones. Each capability is also its own distribution, so an application that needs one thing can depend on `pamoja-mqtt` alone; this package depends on all of them.
4
+
5
+ [![API reference](https://raw.githubusercontent.com/molexxxx/pamoja/main/.github/badges/btn-api.svg)](https://pamoja.molex.cloud/docs/reference/python/pamoja.html)
6
+ [![documentation](https://raw.githubusercontent.com/molexxxx/pamoja/main/.github/badges/btn-docs.svg)](https://pamoja.molex.cloud/docs/)
7
+
8
+ ## Install
9
+
10
+ ```sh
11
+ pip install pamoja
12
+ ```
13
+
14
+ ```python
15
+ from pamoja import mqtt, security
16
+ ```
17
+
18
+ ## What it installs
19
+
20
+ Each module name opens its reference.
21
+
22
+ | Distribution | Module | What it covers |
23
+ | --- | --- | --- |
24
+ | `pamoja-security` | [`pamoja.security`](https://pamoja.molex.cloud/docs/reference/python/pamoja/security.html) | ed25519 device identity: sign a reading and verify it, so a gateway can prove it is authentic |
25
+ | `pamoja-codec` | [`pamoja.codec`](https://pamoja.molex.cloud/docs/reference/python/pamoja/codec.html) | CBOR, JSON, and raw codecs behind one trait, delta and varint batch packing, and an f32 quantizer for metered links |
26
+ | `pamoja-kit` | [`pamoja.kit`](https://pamoja.molex.cloud/docs/reference/python/pamoja/kit.html) | Plain-language helper math: smoothing, calibration, PID and thermostat control, trend and surge prediction, rolling windows, kinematics, and geo |
27
+ | `pamoja-serial` | [`pamoja.serial`](https://pamoja.molex.cloud/docs/reference/python/pamoja/serial.html) | SLIP and COBS byte stuffing with streaming decoders, so a UART byte stream carries discrete packets |
28
+ | `pamoja-modbus` | [`pamoja.modbus`](https://pamoja.molex.cloud/docs/reference/python/pamoja/modbus.html) | Modbus RTU requests and replies with CRC-16/MODBUS for RS485 field devices |
29
+ | `pamoja-can` | [`pamoja.can`](https://pamoja.molex.cloud/docs/reference/python/pamoja/can.html) | CAN 2.0 and CAN-FD frames with 11- and 29-bit identifiers, plus J1939 decode and compose |
30
+ | `pamoja-gpio` | [`pamoja.gpio`](https://pamoja.molex.cloud/docs/reference/python/pamoja/gpio.html) | I2C address frames with reserved-range checks, the four SPI clock modes, and active-high or active-low pins |
31
+ | `pamoja-sensors` | [`pamoja.sensors`](https://pamoja.molex.cloud/docs/reference/python/pamoja/sensors.html) | Datasheet-anchored decoders for the BME280, DS18B20, INA219, and ADS1115 |
32
+ | `pamoja-actuators` | [`pamoja.actuators`](https://pamoja.molex.cloud/docs/reference/python/pamoja/actuators.html) | PCA9685 PWM and servo pulses, and stepper coil sequencing |
33
+ | `pamoja-lora` | [`pamoja.lora`](https://pamoja.molex.cloud/docs/reference/python/pamoja/lora.html) | Time-on-air, duty-cycle off-time, and the regional channel plans a LoRa node must keep to |
34
+ | `pamoja-lorawan` | [`pamoja.lorawan`](https://pamoja.molex.cloud/docs/reference/python/pamoja/lorawan.html) | LoRaWAN 1.0.x MAC framing, AES-CMAC and AES encryption, and both halves of the OTAA join |
35
+ | `pamoja-mesh` | [`pamoja.mesh`](https://pamoja.molex.cloud/docs/reference/python/pamoja/mesh.html) | Addressed, hop-limited, CRC-checked frames and duplicate suppression that floods a packet exactly once |
36
+ | `pamoja-routing` | [`pamoja.routing`](https://pamoja.molex.cloud/docs/reference/python/pamoja/routing.html) | Reverse-path routing that learns the cheapest route from overheard traffic |
37
+ | `pamoja-mavlink` | [`pamoja.mavlink`](https://pamoja.molex.cloud/docs/reference/python/pamoja/mavlink.html) | MAVLink v1 and v2 framing, signing, named message fields, and the mission, command, and offboard protocols |
38
+ | `pamoja-audit` | [`pamoja.audit`](https://pamoja.molex.cloud/docs/reference/python/pamoja/audit.html) | A tamper-evident, hash-chained log; altering, reordering, or dropping a record breaks verification |
39
+ | `pamoja-session` | [`pamoja.session`](https://pamoja.molex.cloud/docs/reference/python/pamoja/session.html) | X25519 key agreement, HKDF, and ChaCha20-Poly1305 with an anti-replay window, with no TLS stack |
40
+ | `pamoja-update` | [`pamoja.update`](https://pamoja.molex.cloud/docs/reference/python/pamoja/update.html) | Signed firmware manifests, streaming image verification, and A/B slots that fall back on their own |
41
+ | `pamoja-power` | [`pamoja.power`](https://pamoja.molex.cloud/docs/reference/python/pamoja/power.html) | Duty cycling and an energy-aware governor that stretches work as the battery drains |
42
+ | `pamoja-telemetry` | [`pamoja.telemetry`](https://pamoja.molex.cloud/docs/reference/python/pamoja/telemetry.html) | Observability that ships only what is worth the bytes as link cost rises, while counting everything |
43
+ | `pamoja-mqtt` | [`pamoja.mqtt`](https://pamoja.molex.cloud/docs/reference/python/pamoja/mqtt.html) | An MQTT client with the topic and wildcard rules, as the core transport |
44
+ | `pamoja-coap` | [`pamoja.coap`](https://pamoja.molex.cloud/docs/reference/python/pamoja/coap.html) | A CoAP client over UDP with confirmable delivery and observe |
45
+ | `pamoja-loopback` | [`pamoja.loopback`](https://pamoja.molex.cloud/docs/reference/python/pamoja/loopback.html) | An in-process transport with topic matching and a fault injector, for testing with no broker |
46
+ | `pamoja-sync` | [`pamoja.sync`](https://pamoja.molex.cloud/docs/reference/python/pamoja/sync.html) | Offline-first queues: in memory, and a crash-safe on-disk queue that survives power loss |
47
+ | `pamoja-ladder` | [`pamoja.ladder`](https://pamoja.molex.cloud/docs/reference/python/pamoja/ladder.html) | Cheapest reachable link first, buffering to a store when every link is down |
48
+ | `pamoja-bus` | [`pamoja.bus`](https://pamoja.molex.cloud/docs/reference/python/pamoja/bus.html) | An in-memory typed publish and subscribe event bus |
49
+ | `pamoja-core` | [`pamoja.core`](https://pamoja.molex.cloud/docs/reference/python/pamoja/core.html) | The transport every link shares (send, receive, subscribe, and a faulty wrapper for tests) and the runtime version |
50
+ | `pamoja-sim` | [`pamoja.sim`](https://pamoja.molex.cloud/docs/reference/python/pamoja/sim.html) | Noisy and replay sensors, a recording actuator, and a simulated robot that dead-reckons its pose |
51
+ | `pamoja-profile` | [`pamoja.profile`](https://pamoja.molex.cloud/docs/reference/python/pamoja/profile.html) | Named, ready-to-run device profiles from plain data or a JSON manifest |
52
+ | `pamoja-ros2` | [`pamoja.ros2`](https://pamoja.molex.cloud/docs/reference/python/pamoja/ros2.html) | ROS 2 names, RIHS01 type hashes, CDR encoding, and rmw_zenoh key assembly, with no ROS 2 installed |
53
+ | `pamoja-zenoh` | [`pamoja.zenoh`](https://pamoja.molex.cloud/docs/reference/python/pamoja/zenoh.html) | Zenoh key expressions: validity, canonical form, and wildcard matching |
54
+
55
+ All of them run on `pamoja-native`, the compiled engine, which is one extension whichever distributions you install.
56
+
57
+ ## Documentation
58
+
59
+ - [The guides](https://pamoja.molex.cloud/docs/), one page per capability with the same example in Rust, TypeScript, Python, and C#.
60
+ - [The Python reference](https://pamoja.molex.cloud/docs/reference/python/pamoja.html), generated from every module.
61
+
62
+ ## License
63
+
64
+ MIT
@@ -0,0 +1,60 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.27"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "pamoja"
7
+ version = "0.1.15"
8
+ description = "The whole pamoja framework in one package: every capability of one memory-safe Rust core, behind an idiomatic Python facade, for IoT, robotics, and drones."
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ license-files = ["LICENSE-MIT"]
12
+ requires-python = ">=3.10"
13
+ authors = [{ name = "molexxxx" }]
14
+ keywords = ["pamoja", "iot", "robotics", "drones", "mqtt", "embedded"]
15
+ classifiers = [
16
+ "Programming Language :: Python :: 3",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Operating System :: OS Independent",
19
+ "Typing :: Typed",
20
+ ]
21
+ dependencies = [
22
+ "pamoja-actuators==0.1.15",
23
+ "pamoja-audit==0.1.15",
24
+ "pamoja-bus==0.1.15",
25
+ "pamoja-can==0.1.15",
26
+ "pamoja-coap==0.1.15",
27
+ "pamoja-codec==0.1.15",
28
+ "pamoja-core==0.1.15",
29
+ "pamoja-gpio==0.1.15",
30
+ "pamoja-kit==0.1.15",
31
+ "pamoja-ladder==0.1.15",
32
+ "pamoja-loopback==0.1.15",
33
+ "pamoja-lora==0.1.15",
34
+ "pamoja-lorawan==0.1.15",
35
+ "pamoja-mavlink==0.1.15",
36
+ "pamoja-mesh==0.1.15",
37
+ "pamoja-modbus==0.1.15",
38
+ "pamoja-mqtt==0.1.15",
39
+ "pamoja-native==0.1.15",
40
+ "pamoja-power==0.1.15",
41
+ "pamoja-profile==0.1.15",
42
+ "pamoja-ros2==0.1.15",
43
+ "pamoja-routing==0.1.15",
44
+ "pamoja-security==0.1.15",
45
+ "pamoja-sensors==0.1.15",
46
+ "pamoja-serial==0.1.15",
47
+ "pamoja-session==0.1.15",
48
+ "pamoja-sim==0.1.15",
49
+ "pamoja-sync==0.1.15",
50
+ "pamoja-telemetry==0.1.15",
51
+ "pamoja-update==0.1.15",
52
+ "pamoja-zenoh==0.1.15",
53
+ ]
54
+
55
+ [project.urls]
56
+ Repository = "https://github.com/molexxxx/pamoja"
57
+ Documentation = "https://pamoja.molex.cloud/docs/"
58
+
59
+ [tool.hatch.build.targets.wheel]
60
+ bypass-selection = true